{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 2
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython2",
      "version": "2.7.6"
    },
    "colab": {
      "name": "tutorial_2_FCN.ipynb",
      "provenance": []
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "feb965fc6abb4ee9bc9dbb5ef3b9723c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_1a99d740897c4ea09c6f33ce3a4a3230",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_82d6d6dfb0c845ec99c25f57e6c5d9d2",
              "IPY_MODEL_c03ab1b2c81149feb0c1551831a6a909"
            ]
          }
        },
        "1a99d740897c4ea09c6f33ce3a4a3230": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "82d6d6dfb0c845ec99c25f57e6c5d9d2": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_f74b5621630e458aa55562f4ae2f36f8",
            "_dom_classes": [],
            "description": "",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 170498071,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 170498071,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_f999b8f0ade1483c83e5c2f047bad551"
          }
        },
        "c03ab1b2c81149feb0c1551831a6a909": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_e2f3ff56de4e424bb8e2f09a9976bf5b",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 170499072/? [03:00&lt;00:00, 946963.10it/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_fe66ac83ad074efbbc802309b16e08a3"
          }
        },
        "f74b5621630e458aa55562f4ae2f36f8": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "f999b8f0ade1483c83e5c2f047bad551": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "e2f3ff56de4e424bb8e2f09a9976bf5b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "fe66ac83ad074efbbc802309b16e08a3": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "rtrNT4NPRp7r"
      },
      "source": [
        "<img src='https://github.com/jeshraghian/snntorch/blob/master/docs/_static/img/snntorch_alpha_w.png?raw=true' width=\"400\">\n",
        "\n",
        "# snnTorch - Gradient-based Learning in Spiking Neural Networks\n",
        "## Tutorial 2\n",
        "### By Jason K. Eshraghian\n",
        "\n",
        "<a href=\"https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb\">\n",
        "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
        "</a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "id": "TKy-qDQdRp73"
      },
      "source": [
        "# Introduction\n",
        "In this tutorial, you will learn how to use snnTorch to:\n",
        "* create a 2-layer fully-connected spiking network;\n",
        "* implement the backpropagation through time (BPTT) algorithm;\n",
        "* to classify both the static and spiking MNIST datasets.\n",
        "\n",
        "If running in Google Colab:\n",
        "* You may connect to GPU by checking `Runtime` > `Change runtime type` > `Hardware accelerator: GPU`\n",
        "* Next, install the latest PyPi distribution of snnTorch by clicking into the following cell and pressing `Shift+Enter`."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "BgBRVUtpRp74",
        "outputId": "61c32ebb-e69b-4d44-852b-0bf58481a9d1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "!pip install snntorch"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Requirement already satisfied: snntorch in /usr/local/lib/python3.7/dist-packages (0.2.7)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from snntorch) (1.1.5)\n",
            "Requirement already satisfied: torch>=1.2.0 in /usr/local/lib/python3.7/dist-packages (from snntorch) (1.8.0+cu101)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from snntorch) (3.2.2)\n",
            "Requirement already satisfied: celluloid in /usr/local/lib/python3.7/dist-packages (from snntorch) (0.2.0)\n",
            "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from snntorch) (1.19.5)\n",
            "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->snntorch) (2018.9)\n",
            "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->snntorch) (2.8.1)\n",
            "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.2.0->snntorch) (3.7.4.3)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->snntorch) (1.3.1)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->snntorch) (0.10.0)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->snntorch) (2.4.7)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->snntorch) (1.15.0)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "Zm-D2lthRp75"
      },
      "source": [
        "## 1. Setting up the Static MNIST Dataset\n",
        "### 1.1. Import packages and setup environment"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "sEygpdc8Rp76"
      },
      "source": [
        "import snntorch as snn\n",
        "import torch\n",
        "import torch.nn as nn\n",
        "from torch.utils.data import DataLoader\n",
        "from torchvision import datasets, transforms\n",
        "import numpy as np\n",
        "import itertools\n",
        "import matplotlib.pyplot as plt"
      ],
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "id": "RcX7J9vVRp76"
      },
      "source": [
        "### 1.2 Define network and SNN parameters\n",
        "We will use a 784-1000-10 FCN architecture for a sequence of 25 time steps.\n",
        "\n",
        "* `alpha` is the decay rate of the synaptic current of a neuron\n",
        "* `beta` is the decay rate of the membrane potential of a neuron"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "bKEj2hucRp77"
      },
      "source": [
        "# Network Architecture\n",
        "num_inputs = 32*32\n",
        "num_hidden = 1000\n",
        "num_outputs = 10\n",
        "\n",
        "# Training Parameters\n",
        "batch_size=128\n",
        "data_path='/data/mnist'\n",
        "\n",
        "# Temporal Dynamics\n",
        "num_steps = 25\n",
        "time_step = 1e-3\n",
        "tau_mem = 3e-3\n",
        "tau_syn = 2.2e-3\n",
        "alpha = float(np.exp(-time_step/tau_syn))\n",
        "beta = float(np.exp(-time_step/tau_mem))\n",
        "\n",
        "dtype = torch.float\n",
        "device = torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"cpu\")"
      ],
      "execution_count": 9,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "agBKaYiIQxbS"
      },
      "source": [
        "alpha = 0.8\r\n",
        "beta = 0.9"
      ],
      "execution_count": 17,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "gM_hcwDIRp78"
      },
      "source": [
        "### 1.3 Download MNIST Dataset\n",
        "To see how to construct a validation set, refer to Tutorial 1."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "0xwYb15xRp79",
        "outputId": "fd8cb868-a8c3-45a1-a43a-4aad7992884a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 120,
          "referenced_widgets": [
            "feb965fc6abb4ee9bc9dbb5ef3b9723c",
            "1a99d740897c4ea09c6f33ce3a4a3230",
            "82d6d6dfb0c845ec99c25f57e6c5d9d2",
            "c03ab1b2c81149feb0c1551831a6a909",
            "f74b5621630e458aa55562f4ae2f36f8",
            "f999b8f0ade1483c83e5c2f047bad551",
            "e2f3ff56de4e424bb8e2f09a9976bf5b",
            "fe66ac83ad074efbbc802309b16e08a3"
          ]
        }
      },
      "source": [
        "# Define a transform\n",
        "transform = transforms.Compose([\n",
        "            transforms.Grayscale(),\n",
        "            transforms.Resize((32, 32)),\n",
        "            transforms.ToTensor(),\n",
        "            transforms.Normalize((0,), (1,))])\n",
        "\n",
        "mnist_train = datasets.CIFAR10(data_path, train=True, download=True, transform=transform)\n",
        "mnist_test = datasets.CIFAR10(data_path, train=False, download=True, transform=transform)"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to /data/mnist/cifar-10-python.tar.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "feb965fc6abb4ee9bc9dbb5ef3b9723c",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, max=170498071.0), HTML(value='')))"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "Extracting /data/mnist/cifar-10-python.tar.gz to /data/mnist\n",
            "Files already downloaded and verified\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "DIg3vLmURp7-"
      },
      "source": [
        "### 1.4 Create DataLoaders"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "K4DF-odMRp7_"
      },
      "source": [
        "train_loader = DataLoader(mnist_train, batch_size=batch_size, shuffle=True, drop_last=True)\n",
        "test_loader = DataLoader(mnist_test, batch_size=batch_size, shuffle=True, drop_last=True)"
      ],
      "execution_count": 8,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "pD4Dw-RoRp7_"
      },
      "source": [
        "## 2. Define Network\n",
        "snnTorch treats neurons as activations with recurrent connections. This allows for smooth integration with PyTorch.\n",
        "There are a few useful neuron models and surrogate gradient functions which approximate the gradient of spikes.\n",
        "\n",
        "Our network will use one type of neuron model and one surrogate gradient:\n",
        "1. `snntorch.Stein` is a basic leaky integrate and fire (LIF) neuron. Specifically, it assumes instantaneous rise times for synaptic current and membrane potential.\n",
        "2. `snntorch.FastSigmoidSurrogate` defines separate forward and backward functions. The forward function is a Heaviside step function for spike generation. The backward function is the derivative of a fast sigmoid function, to ensure continuous differentiability.\n",
        "The `FastSigmoidSurrogate` function has been adapted from:\n",
        "\n",
        ">Neftci, E. O., Mostafa, H., and Zenke, F. (2019) Surrogate Gradient Learning in Spiking Neural Networks. https://arxiv.org/abs/1901/09948"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "Sf9RdE9jRp8A"
      },
      "source": [
        "# from snntorch import surrogate\n",
        "#\n",
        "# spike_grad = surrogate.FastSigmoid.apply\n",
        "# snn.slope = 50"
      ],
      "execution_count": 10,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "Og9e57W0Rp8B"
      },
      "source": [
        "The surrogate is passed to `spike_grad` and overrides the default gradient of the Heaviside step function.\n",
        "If we did not override the default gradient, (zero everywhere, except for $x=1$ where it is technically infinite but clipped to 1 here), then learning would not take place for as long as the neuron was not emitting post-synaptic spikes.\n",
        "\n",
        "`snn.slope` defines the slope of the backward surrogate.\n",
        "\n",
        "TO-DO: Include visualisation."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "Yo-x48mARp8C"
      },
      "source": [
        "Now we can define our spiking neural network (SNN).\n",
        "Creating an instance of the `Stein` neuron requires two arguments and two optional arguments:\n",
        "1. $I_{syn}$ decay rate, $\\alpha$,\n",
        "2. $V_{mem}$ decay rate, $\\beta$,\n",
        "3. the surrogate spiking function, `spike_grad` (*default*: the gradient of the Heaviside function), and\n",
        "4. the threshold for spiking, (*default*: 1.0).\n",
        "\n",
        "snnTorch treats the LIF neuron as a recurrent activation. Therefore, it requires initialization of its internal states.\n",
        "For each layer, we initialize the synaptic current `syn1` and `syn2`, the membrane potential `mem1` and `mem2`, and the post-synaptic spikes `spk1` and `spk2` to zero.\n",
        "A class method `init_stein` will take care of this.\n",
        "\n",
        "For rate coding, the final layer of spikes and membrane potential are used to determine accuracy and loss, respectively.\n",
        "So their historical values are recorded in `spk2_rec` and `mem2_rec`.\n",
        "\n",
        "Keep in mind, the dataset we are using is just static MNIST. I.e., it is *not* time-varying.\n",
        "Therefore, we pass the same MNIST sample to the input at each time step.\n",
        "This is handled in the line `cur1 = self.fc1(x)`, where `x` is the same input over the whole for-loop."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "P6RHCnXMRp8D"
      },
      "source": [
        "# Define Network\n",
        "class Net(nn.Module):\n",
        "    def __init__(self):\n",
        "        super().__init__()\n",
        "\n",
        "    # initialize layers\n",
        "        self.fc1 = nn.Linear(num_inputs, num_hidden)\n",
        "        self.lif1 = snn.Stein(alpha=alpha, beta=beta)\n",
        "        self.fc2 = nn.Linear(num_hidden, num_outputs)\n",
        "        self.lif2 = snn.Stein(alpha=alpha, beta=beta)\n",
        "\n",
        "    def forward(self, x):\n",
        "        spk1, syn1, mem1 = self.lif1.init_stein(batch_size, num_hidden)\n",
        "        spk2, syn2, mem2 = self.lif2.init_stein(batch_size, num_outputs)\n",
        "\n",
        "        spk2_rec = []\n",
        "        mem2_rec = []\n",
        "\n",
        "        for step in range(num_steps):\n",
        "            cur1 = self.fc1(x)\n",
        "            spk1, syn1, mem1 = self.lif1(cur1, syn1, mem1)\n",
        "            cur2 = self.fc2(spk1)\n",
        "            spk2, syn2, mem2 = self.lif2(cur2, syn2, mem2)\n",
        "\n",
        "            spk2_rec.append(spk2)\n",
        "            mem2_rec.append(mem2)\n",
        "\n",
        "        return torch.stack(spk2_rec, dim=0), torch.stack(mem2_rec, dim=0)\n",
        "\n",
        "net = Net().to(device)"
      ],
      "execution_count": 18,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "386KNHG7Rp8E"
      },
      "source": [
        "## 3. Training\n",
        "Time for training! Let's first define a couple of functions to print out test/train accuracy."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "cOKKbUnDRp8F"
      },
      "source": [
        "def print_batch_accuracy(data, targets, train=False):\n",
        "    output, _ = net(data.view(batch_size, -1))\n",
        "    _, idx = output.sum(dim=0).max(1)\n",
        "    acc = np.mean((targets == idx).detach().cpu().numpy())\n",
        "\n",
        "    if train:\n",
        "        print(f\"Train Set Accuracy: {acc}\")\n",
        "    else:\n",
        "        print(f\"Test Set Accuracy: {acc}\")\n",
        "\n",
        "def train_printer():\n",
        "    print(f\"Epoch {epoch}, Minibatch {minibatch_counter}\")\n",
        "    print(f\"Train Set Loss: {loss_hist[counter]}\")\n",
        "    print(f\"Test Set Loss: {test_loss_hist[counter]}\")\n",
        "    print_batch_accuracy(data_it, targets_it, train=True)\n",
        "    print_batch_accuracy(testdata_it, testtargets_it, train=False)\n",
        "    print(\"\\n\")"
      ],
      "execution_count": 19,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "mZqfCe0KRp8J"
      },
      "source": [
        "### 3.1 Optimizer & Loss\n",
        "* *Output Activation*: We'll apply the softmax function to the membrane potentials of the output layer, rather than the spikes.\n",
        "* *Loss*: This will then be used to calculate the negative log-likelihood loss.\n",
        "By encouraging the membrane of the correct neuron class to reach the threshold, we expect that neuron will fire more frequently.\n",
        "The loss could be applied to the spike count as well, but the membrane is  continuous whereas spike count is discrete.\n",
        "* *Optimizer*: The Adam optimizer is used for weight updates.\n",
        "* *Accuracy*: Accuracy is measured by counting the spikes of the output neurons. The neuron that fires the most frequently will be our predicted class."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "UMZ-4uGlRp8K"
      },
      "source": [
        "optimizer = torch.optim.Adam(net.parameters(), lr=2e-4, betas=(0.9, 0.999))\n",
        "log_softmax_fn = nn.LogSoftmax(dim=-1)\n",
        "loss_fn = nn.NLLLoss()"
      ],
      "execution_count": 20,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "UerqLkd1Rp8K"
      },
      "source": [
        "### 3.2 Training Loop\n",
        "Now just sit back, relax, and wait for convergence."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "76CEHI2xRp8L",
        "outputId": "e29c7e0e-4504-4d08-fdcf-70ab371b0996",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "loss_hist = []\n",
        "test_loss_hist = []\n",
        "counter = 0\n",
        "\n",
        "# Outer training loop\n",
        "for epoch in range(3):\n",
        "    minibatch_counter = 0\n",
        "    train_batch = iter(train_loader)\n",
        "\n",
        "    # Minibatch training loop\n",
        "    for data_it, targets_it in train_batch:\n",
        "        data_it = data_it.to(device)\n",
        "        targets_it = targets_it.to(device)\n",
        "\n",
        "        output, mem_rec = net(data_it.view(batch_size, -1))\n",
        "        log_p_y = log_softmax_fn(mem_rec)\n",
        "        loss_val = torch.zeros((1), dtype=dtype, device=device)\n",
        "\n",
        "        # Sum loss over time steps: BPTT\n",
        "        for step in range(num_steps):\n",
        "          loss_val += loss_fn(log_p_y[step], targets_it)\n",
        "\n",
        "        # Gradient calculation\n",
        "        optimizer.zero_grad()\n",
        "        loss_val.backward(retain_graph=True)\n",
        "\n",
        "        # Weight Update\n",
        "        nn.utils.clip_grad_norm_(net.parameters(), 1) # gradient clipping\n",
        "        optimizer.step()\n",
        "\n",
        "        # Store loss history for future plotting\n",
        "        loss_hist.append(loss_val.item())\n",
        "\n",
        "        # Test set\n",
        "        test_data = itertools.cycle(test_loader)\n",
        "        testdata_it, testtargets_it = next(test_data)\n",
        "        testdata_it = testdata_it.to(device)\n",
        "        testtargets_it = testtargets_it.to(device)\n",
        "\n",
        "        # Test set forward pass\n",
        "        test_output, test_mem_rec = net(testdata_it.view(batch_size, -1))\n",
        "\n",
        "        # Test set loss\n",
        "        log_p_ytest = log_softmax_fn(test_mem_rec)\n",
        "        log_p_ytest = log_p_ytest.sum(dim=0)\n",
        "        loss_val_test = loss_fn(log_p_ytest, testtargets_it)\n",
        "        test_loss_hist.append(loss_val_test.item())\n",
        "\n",
        "        # Print test/train loss/accuracy\n",
        "        if counter % 50 == 0:\n",
        "            train_printer()\n",
        "        minibatch_counter += 1\n",
        "        counter += 1\n",
        "\n",
        "loss_hist_true_grad = loss_hist\n",
        "test_loss_hist_true_grad = test_loss_hist"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch 2, Minibatch 70\n",
            "Train Set Loss: 53.006282806396484\n",
            "Test Set Loss: 55.81739807128906\n",
            "Train Set Accuracy: 0.2265625\n",
            "Test Set Accuracy: 0.21875\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 120\n",
            "Train Set Loss: 50.85497283935547\n",
            "Test Set Loss: 50.894222259521484\n",
            "Train Set Accuracy: 0.265625\n",
            "Test Set Accuracy: 0.3125\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 170\n",
            "Train Set Loss: 49.45563507080078\n",
            "Test Set Loss: 50.29939651489258\n",
            "Train Set Accuracy: 0.3671875\n",
            "Test Set Accuracy: 0.2578125\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 220\n",
            "Train Set Loss: 52.987083435058594\n",
            "Test Set Loss: 51.679054260253906\n",
            "Train Set Accuracy: 0.2109375\n",
            "Test Set Accuracy: 0.234375\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 270\n",
            "Train Set Loss: 49.68134307861328\n",
            "Test Set Loss: 52.56451416015625\n",
            "Train Set Accuracy: 0.3359375\n",
            "Test Set Accuracy: 0.234375\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 320\n",
            "Train Set Loss: 54.24823760986328\n",
            "Test Set Loss: 51.5257682800293\n",
            "Train Set Accuracy: 0.25\n",
            "Test Set Accuracy: 0.25\n",
            "\n",
            "\n",
            "Epoch 2, Minibatch 370\n",
            "Train Set Loss: 50.897029876708984\n",
            "Test Set Loss: 49.811622619628906\n",
            "Train Set Accuracy: 0.2890625\n",
            "Test Set Accuracy: 0.34375\n",
            "\n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "error",
          "ename": "KeyboardInterrupt",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-21-6d59e1adaf17>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     23\u001b[0m         \u001b[0;31m# Gradient calculation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     24\u001b[0m         \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m         \u001b[0mloss_val\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mretain_graph\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     26\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     27\u001b[0m         \u001b[0;31m# Weight Update\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/tensor.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m    243\u001b[0m                 \u001b[0mcreate_graph\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcreate_graph\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    244\u001b[0m                 inputs=inputs)\n\u001b[0;32m--> 245\u001b[0;31m         \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mautograd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgradient\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    246\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    247\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mregister_hook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/autograd/__init__.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m    145\u001b[0m     Variable._execution_engine.run_backward(\n\u001b[1;32m    146\u001b[0m         \u001b[0mtensors\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrad_tensors_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 147\u001b[0;31m         allow_unreachable=True, accumulate_grad=True)  # allow_unreachable flag\n\u001b[0m\u001b[1;32m    148\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "fdOuwCWHRp8L"
      },
      "source": [
        "## 4. Results\n",
        "### 4.1 Plot Training/Test Loss"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "WJGSBq6zRp8M",
        "outputId": "9c224143-2579-4708-88a8-e645e32ce289",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 334
        }
      },
      "source": [
        "# Plot Loss\n",
        "fig = plt.figure(facecolor=\"w\", figsize=(10, 5))\n",
        "plt.plot(loss_hist)\n",
        "plt.plot(test_loss_hist)\n",
        "plt.legend([\"Test Loss\", \"Train Loss\"])\n",
        "plt.xlabel(\"Epoch\")\n",
        "plt.ylabel(\"Loss\")\n",
        "plt.show()"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAE9CAYAAADaqWzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeZgU1fm2n6rq7hlWFURFMCJGI4gIEcF9/VQU9xB/xiW472LUSDQGQ4yJJEZUUEGigsEVURZZ3EBkFRxg2Pd9gBmGgdmnp7ur6vuj6lSdqjrVXd0zPTPAe18XFz1d26mlz3nq3Y6k67oOgiAIgiAIIuvIjd0AgiAIgiCIwwUSXgRBEARBEA0ECS+CIAiCIIgGgoQXQRAEQRBEA0HCiyAIgiAIooEg4UUQBEEQBNFAhBq7AUE4+uij0alTp8ZuBkEQBEEQREq2bduGffv2CZcdFMKrU6dOyMvLa+xmEARBEARBpKRXr16+y8jVSBAEQRAE0UCQ8CIIgiAIgmggSHgRBEEQBEE0EAdFjBdBEARBEHUnHo+joKAA0Wi0sZtySJCbm4uOHTsiHA4H3oaEF0EQBEEcJhQUFKBVq1bo1KkTJElq7OYc1Oi6jpKSEhQUFOCkk04KvB25GgmCIAjiMCEajaJt27YkuuoBSZLQtm3btK2HJLwIgiAI4jCCRFf9kcm1JFcjQRAEQRANQklJCS6//HIAQGFhIRRFQbt27QAAixcvRiQSSbr97NmzEYlEcN5553mWjR07Fnl5eXjzzTfrv+H1CAkvgiAIgiAahLZt2yI/Px8AMGTIELRs2RJ//OMfA28/e/ZstGzZUii8DhbI1QhgfWEFPl60A7GE1thNIQiCIIjDiiVLluDiiy/GWWedhauuugp79uwBAAwfPhxdu3ZF9+7dceutt2Lbtm0YNWoUXnvtNfTo0QNz584NtP9hw4ahW7du6NatG15//XUAQFVVFfr164czzzwT3bp1w2effQYAePbZZ61jpiMI04EsXgDmb9qHF6euQb8z2iMSIi1KEARBEA2Brut4/PHHMXnyZLRr1w6fffYZnn/+ebz//vsYOnQotm7dipycHJSWluLII4/EQw89lJaVbMmSJRgzZgwWLVoEXdfRp08fXHzxxdiyZQuOP/54TJs2DQBQVlaGkpISTJw4EevWrYMkSSgtLc3KOZPwAqDIRnBcQiOLF0EQBHF48LevVmPN7vJ63WfX41vjr9edHnj92tparFq1CldccQUAQFVVtG/fHgDQvXt33H777bjxxhtx4403ZtSeefPm4aabbkKLFi0AADfffDPmzp2Lvn374umnn8af/vQnXHvttbjwwguRSCSQm5uLe++9F9deey2uvfbajI6ZCjLvwBZeqq43cksIgiAI4vBB13WcfvrpyM/PR35+PlauXIlvv/0WADBt2jQ8+uijWLp0Kc4++2wkEol6O+6pp56KpUuX4owzzsBf/vIXvPjiiwiFQli8eDH69++PqVOnom/fvvV2PB6yeIETXhoJL4IgCOLwIB3LVLbIyclBcXExFi5ciHPPPRfxeBwbNmxAly5dsHPnTlx66aW44IIL8Omnn6KyshKtWrVCeXlwK92FF16Iu+66C88++yx0XcfEiRMxbtw47N69G23atMEdd9yBI488Eu+++y4qKytRXV2Na665Bueffz46d+6clXMm4QXO1aiS8CIIgiCIhkKWZUyYMAEDBw5EWVkZEokE/vCHP+DUU0/FHXfcgbKyMui6joEDB+LII4/Eddddh/79+2Py5MkYMWIELrzwQsf+xo4di0mTJll///TTT7jrrrvQu3dvAMB9992Hnj174ptvvsEzzzwDWZYRDocxcuRIVFRU4IYbbkA0GoWu6xg2bFhWzlnS9abvX+vVqxfy8vKytv8vlxbgqfHL8eMzl+DEti2ydhyCIAiCaEzWrl2LLl26NHYzDilE1zSZbqEYL/DB9U1egxIEQRAEcRBDwgu28NJIeBEEQRAEkUVIeAEIkcWLIAiCIIgGgIQXAFmirEaCIAiCILIPCS8AIYWEF0EQBEEQ2YeEFwBFNi4DuRoJgiAIgsgmJLwAKORqJAiCIIisU1JSgh49eqBHjx447rjj0KFDB+vvWCyWdNu8vDwMHDgwreN16tQJ+/btq0uT6x0qoAqqXE8QBEEQDUHbtm2Rn58PABgyZIhnwutEIoFQSCxNevXqhV69ejVIO7MJWbxAwosgCIIgGou77roLDz30EPr06YNBgwZh8eLFOPfcc9GzZ0+cd955WL9+PQBg9uzZ1sTVQ4YMwT333INLLrkEnTt3xvDhwwMfb9u2bbjsssvQvXt3XH755dixYwcA4PPPP0e3bt1w5pln4qKLLgIArF69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\n",
            "text/plain": [
              "<Figure size 720x360 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "h7xb37iHRp8N"
      },
      "source": [
        "### 4.2 Test Set Accuracy\n",
        "This function just iterates over all minibatches to obtain a measure of accuracy over the full 10,000 samples in the test set."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "R1ReGuNURp8N",
        "outputId": "562404c5-2281-4741-cf8a-8b7119ecb839",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "total = 0\n",
        "correct = 0\n",
        "test_loader = DataLoader(mnist_test, batch_size=batch_size, shuffle=True, drop_last=False)\n",
        "\n",
        "with torch.no_grad():\n",
        "  net.eval()\n",
        "  for data in test_loader:\n",
        "    images, labels = data\n",
        "    images = images.to(device)\n",
        "    labels = labels.to(device)\n",
        "\n",
        "    # If current batch matches batch_size, just do the usual thing\n",
        "    if images.size()[0] == batch_size:\n",
        "      outputs, _ = net(images.view(batch_size, -1))\n",
        "\n",
        "    # If current batch does not match batch_size (e.g., is the final minibatch),\n",
        "    # modify batch_size in a temp variable and restore it at the end of the else block\n",
        "    else:\n",
        "      temp_bs = batch_size\n",
        "      batch_size = images.size()[0]\n",
        "      outputs, _ = net(images.view(images.size()[0], -1))\n",
        "      batch_size = temp_bs\n",
        "\n",
        "    _, predicted = outputs.sum(dim=0).max(1)\n",
        "    total += labels.size(0)\n",
        "    correct += (predicted == labels).sum().item()\n",
        "\n",
        "print(f\"Total correctly classified test set images: {correct}/{total}\")\n",
        "print(f\"Test Set Accuracy: {100 * correct / total}%\")"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Total correctly classified test set images: 2923/10000\n",
            "Test Set Accuracy: 29.23%\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "zNJjSKATRp8N"
      },
      "source": [
        "Voila! That's it for static MNIST."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "2qUxjHwBRp8f"
      },
      "source": [
        "## 5. Spiking MNIST\n",
        "Part of the appeal of SNNs is their ability to handle time-varying spiking data. So let's use rate-coding to convert MNIST into spiking MNIST using the `spikegen` module in the previous tutorial, and train our network with that instead."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "8K7_C-2rRp8g"
      },
      "source": [
        "from snntorch import spikegen\n",
        "\n",
        "# MNIST to spiking-MNIST\n",
        "spike_data, spike_targets = spikegen.rate(data_it, targets_it, num_steps=num_steps)"
      ],
      "execution_count": 33,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "BvaNfns_Rp8h"
      },
      "source": [
        "### 5.1 Visualiser\n",
        "Just so you're damn sure it's a spiking input."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "ll2D4jtdRp8i",
        "outputId": "616f69c3-e838-4503-d3aa-af41a2f903d7",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "!pip install celluloid # matplotlib animations made easy"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Requirement already satisfied: celluloid in /usr/local/lib/python3.7/dist-packages (0.2.0)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from celluloid) (3.2.2)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->celluloid) (2.4.7)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->celluloid) (1.3.1)\n",
            "Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from matplotlib->celluloid) (1.19.5)\n",
            "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->celluloid) (2.8.1)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->celluloid) (0.10.0)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.1->matplotlib->celluloid) (1.15.0)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mgpzXVbGRpm1",
        "outputId": "e315266d-e073-4f2e-9d08-72dc72d91e6c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "data_it.size()"
      ],
      "execution_count": 39,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "torch.Size([128, 1, 32, 32])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 39
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ryIOfAa0VveY",
        "outputId": "8fe6b9ab-198f-457c-c9a4-b6a3a10790e3",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 283
        }
      },
      "source": [
        "fig, ax = plt.subplots()\r\n",
        "ax.imshow(data_it[0, 0].cpu(), cmap='plasma')"
      ],
      "execution_count": 46,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f3978522290>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 46
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "cJQ0XUAZRp8i",
        "outputId": "0920f979-23d2-4dd5-f039-8600aeeb3464",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 540
        }
      },
      "source": [
        "from celluloid import Camera\n",
        "from IPython.display import HTML\n",
        "\n",
        "# Animator\n",
        "spike_data_sample = spike_data.unsqueeze(2)[:, 0, 0].cpu()\n",
        "\n",
        "fig, ax = plt.subplots()\n",
        "camera = Camera(fig)\n",
        "plt.axis('off')\n",
        "\n",
        "for step in range(num_steps):\n",
        "    im = ax.imshow(spike_data_sample[step, :, :].squeeze(0), cmap='plasma')\n",
        "    camera.snap()\n",
        "\n",
        "# interval=40 specifies 40ms delay between frames\n",
        "a = camera.animate(interval=40)\n",
        "HTML(a.to_html5_video())"
      ],
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<video width=\"432\" height=\"288\" controls autoplay loop>\n",
              "  <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAEORW1kYXQAAAKuBgX//6rcRem9\n",
              "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n",
              "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
              "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
              "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
              "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
              "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MyBsb29r\n",
              "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
              "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
              "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
              "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjUgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
              "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
              "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAABVZZYiE\n",
              "ADv//vdOvwKbRZdqA5JXCvbKpCZZuVJrAfKmAAADAAARsG58lw15q9IkAACtobgKn4ni8AC8Mz0j\n",
              "7hXbQtHISuMpwZdNIHbbSgwBbzVbSXXT+1SBvVhuTM/Brc8vBa5Ju1JrsLxpqcBtDIS2C/wwTYC+\n",
              "olpEPVgLv/hoBLmxJawo7eOsAwkChs6+UP7phl4JJyX2onNyg1y6tPLs9oIEZa2nIRDoNewdBMVm\n",
              "EBJXPUP9Qecm0Q054EFXk1wWEAOiyZigWA2OM8zyuy/RLKQDguReG2ox0+ievpubgHQNMT798dPz\n",
              "Q7VfUQyJLK1qHDqTDOT6J0/3KpF4FxTGiftZ0m2wIn2saT3MLMZ7la78+jYE/a8ffWkzPMlf9Z5n\n",
              "B+hwhUdlNS6rOPdHNo9QPLLZsylp4+L3+sJfe/Z1xSF3uppqDafhnyojnZ0X103EV2lLWrllBIpA\n",
              "zVoeC/0ZXx9TjEfkdOXCDjaiqMlx1c7bQYhLHJDOpzcoIQAtXmOVJ8p+VZ7zgMiXn254JbynWz+x\n",
              "fEmB9eI7qiUFEducfQfy2ic+9yzVU5cwzLpuz/gutu57V59/Yh+psYk/e3O7GLTpTy0g+w+zzCx9\n",
              "09qUaR0AiXjTnDC4P8rmL2OsDAML7XnoFNMo6DiiDTiw7F/c0ud1tSFm1THnZCDgFYfiCKe+309Z\n",
              "0kXCyEv3S+0G0zQH9dBHLol8NcmwHhplgVRotRRSlSKmu5Dcr8rdoFXiXVKlb6e4n0OvcOljmF8f\n",
              "kkYenYuh/ZlUw6+DIqIuxGPKAcdI1BP//eVleVojz3PQAjTw99yDwXprd+FNmDKe9Fws/ZNWN86Y\n",
              "rU5QZsEW4bNQSJcD56+7ulP4yxIsxdTLCECLhvihw1oNDQYrnbdsFP/KYWqNH0HTXneRzWJlJXUD\n",
              "tl/I5sN0cIQn+gnwWkrqa+7iE58R51d7VFVDSVIZVxBy3Fj1r4Dzsku7tF41AE0W22HFkBcjZFF0\n",
              "aP+x33wrsChDvT9OzDkBb6KHQIg0mh6Qv6kOErm74L8LEaHV0jp32jPJDN54+MFfR+xMCpwoSts2\n",
              "F/stLv+vARbO8h9IHAGAkrLIbI5B5NsvFsptAgeHe1AoMDnBWobq3OIfMbWkuwmPJmJ4hyorEzLT\n",
              "QDBd9pgMNacwJutWJB+xwemCyAMc2snPhOU5LyR1TZP5tW0gHGNI/BGczh7ja99ABDywvLzR4Wtn\n",
              "EDEp9/utoK4KUsEKimAlnndTZ7Dj9qXMdBf+YQFrAXa30qFvvp5gAGAePNMFqLFh8y5PUrLDoF+z\n",
              "IyTmVBtAViXzSyLXILgUX5/OVsEKlvH89rtkU1TFJowP1bz8UFxZSzeJImAT9nFLZklEUrBuUcJs\n",
              "Ews0m/ehgzsO9HJmwE+AIy+PjOJ4dA1r8Uev7kStepwU0KNUG8+r5BeT+x/THE6ayh0iCOs58zA9\n",
              "J/qjnVlWi+jVdtbhryKHmNedWa21pggSwlQv3c4dXGaFlnCrhNlFDsVBqKg3LKbhwxzYVPuhwjdn\n",
              "w+84IrRUmdQtMpHFQDerZ0xh98bdOKtDvltLZi8/UZ84LKf6QkVs/F+JQpiAvFoAE7lFLZEEw56/\n",
              "iOQKOUdtO2WI3zbsC0StGgeqNMsCXYdSpoIL1FbSo7LvHNmIuQjLRWMBNBQ6DNvTuqMTLs31c0kp\n",
              "aaH8YKAJQaFd6xEurQt3Z8NjVei9zGDblCSKb0Y+4PkMY/fdD/0JDmB7kQ1oc5k0b4WFDawequPf\n",
              "5ARKbhOttivz04vNh9H7RuaVTRtRi9bwve03/VXzvmQvVNBN/iukDsRZVeUDD3fSJb3MZByFEtVo\n",
              "gK25BU4qIZvrb91o7ydHJpeEEB5M3RqwPZ6a4CshQKQ/g4p1l4Cf4ngKwMNsvP7qw6fuXpmZl1jb\n",
              "f+m2/aJNYHa3kQXm6/g1X03ABo6kJ2VoU37H8IYWuLy+c4yilmwndyrW/64d/Ow8rposgUrJk0lR\n",
              "gsdFbJkcXaP6wsi1UEMwMJE1Xd3AmKzjo2bNsPkT8JibxUckVFAxQPh54pwwfwO6zX7LAd4KXV02\n",
              "PL2ti2YykkhsRZG+Wuymkuqxb6gP4Hnqco1IvjC61xBxSvjJbf7lgOU6hl+R0ZoBUPqQrLtOVEo9\n",
              "kHvdoWNttZ4fO1aW5eW4B/6NQAwgkGViDhjUVKmFcaTtXW0R3Alevo6jVcHSHzek3lizYw0d9tyk\n",
              "UPq77hWE6TXHSOOK1pX3rWyiS4EUw+GDO87X3WaZnZItd/zZw6O5UeQjvyWR2/JhXQkjXQXxNgAu\n",
              "GZk1ptt+K5Ovn1hWYZGvDQKU5vvgxe4zB1ojeEWpai3CMOHOJYqQrLF0/CXGPutWYG/2hdHzm3RS\n",
              "IZvYnEdR+/R7fiNum5SXbsg3bDGgWOVOaRqo4CPG+krhO+mT5KylNH7uZv60Lv2wpk10u3a4sqV1\n",
              "81NI2RSXKMAMh8Qq1zPck9s/K937Cwb/ukDMoAql314553ArQKfUh6tpceocMr0GnjvqFa8t9tpV\n",
              "CqtxJHoXOt98JfiEJnI2RTGKkQeWt5hxq2TmadgTrt11cBSvFi2Yxh7XcumJsrVwEcq72FJoohDN\n",
              "PsCF24Ejfku7tVeUPJXNQhVjB0ZKBBeDjjPcMr6ndNhFXYyjvdoi07UOH88RKQtXPRXaqqgkpqZc\n",
              "RamJJFj5o6Wf0esaDQsx7t1UqNC3DUSBbJiSechAjiKbvYXPdAQADzNmtnmJbbSr/Oo/fE6zuYFf\n",
              "lzHr8tlgzubdVYRzYOpJX93Zi+n2nw1jNyqFmHrS7W1vLgbZEItE1PfY6Ijmnk/T8kAgJA7Of3KZ\n",
              "1w9P7HMtICpIB5F8KHIvk7T+jdp1Z+OCK8KIFsBa8v53tZfOYNtbIJQjqVW/Z/nNTpwjHvhbUk0w\n",
              "uZPWN7I50ODjrB6jXUUgy5ibpdruZTcPH5isv1Ri69TooMAlrRvwNTwyGXjXLDbVo+n+1vRNbzmH\n",
              "B2MiNRI28PPM2U9Dswg9EwcFZSc/7sr/UcQvuqbQTGVlSZGMbSA1Ri48zN2HYB9a1m6P+FKDJWqw\n",
              "Z4NKneHnTMBdQeO2M+9yEG7UrbSGW4OnsW93lDyQYqjUS7eLPDBBQXOmalla7aQABUXkFB4q5zmg\n",
              "0yfxwvfe5Jlx3cJ8PlEIEWG3d6fA3uXr2YZsZzOqZgVmPTh89sP84Mrkip5S94K/3PJKoZ7YCiAf\n",
              "ySP+gCahTQfcm+sA0n5vkt3NNy/+X1aLSKHMJkl/UiDhnNm41kdHE/gW29md+PUSjqmxJxo7Xbjv\n",
              "1QVX3DCCnTEcw1i8GIAOIsy85/ryIeUerdVSSyucjF3Ahj+uXl0VFsqzHGapcVZZOmxJ6s7MY2DN\n",
              "oCXUfNQPa+h943cqgvzWHDV9D58nXQNoL08k1xH61MN8c8KonNzReCmF8QwytJDt6WGR+e7eDPw2\n",
              "wYNlq/rQjAHH6OUxML98zRYctjgUdlPMPUL0b7fivWHfHD/Ruv6jQuuklQPul3PUB8pjg1tFOt8G\n",
              "+4j6WGheH1w5x0aMoOdjzWPgtksfIGyHrUTYF0qEjGEGZD5p0uzz4PqFuPgjo/u4DQ80f1rSdr8R\n",
              "k0NaFym/84Xxvfn8szHDOfRe54/QfOpdCxHIZ/0k/9N8EpltjH2RU9pn8skeDyxltoexumRvUdUz\n",
              "a+87MUFXR1aJiT7P5qqVnhZU2DXD/DILAiCWgvU/cP6jlxIztjEF+KuZ4I9YKU8EgIJXZnTuDBzW\n",
              "p6AczC5iiN4B3OWRItwD6bUVUPK9/xLNDgT4spHc92MYnIxwnx5XHd9GZgz2gHHDkZGygFNBebGL\n",
              "mCeCiTms9Kv+jJiW5N4q1KPPvZQb7uv1n1lH8yhil5Ac+To+1hFzcZJAI9GuayI4RF/ar4+ebguf\n",
              "aoBOg6ICULNPjre4nBBfmhtIyRbZ56Y5IKnxO+hsvfGx+ZEfT+QC1FHx9ToFdE0PnAphSoyCutej\n",
              "XxRILnQeug44JJbZv/+3SrZ0ILf74IvGD2jPdaEiFtWt8uxs/fC5CNtqFMSQbaCWD5Y/by/rBZCp\n",
              "Bt7j4flFNtThe48jcqeGRTX7EXQZEG4rEJkyW0upXLuPLhJrCQRKO7EmZicvMteJI7FA8iLlDaj0\n",
              "o/hG/8pEcanVHt0d7c/DCf9wS6PPythY55WlcK9CEVRBhnc34kOQIrKvzGlMLHmqMtxJqhkT6OvY\n",
              "FEKLkrF8fyeWIdfber4qaG7a9/kOd9kj14xetohM7sMkRP9qcUxIzJ7gE9vqVcfWbL5dYS/JqLch\n",
              "W4TD8vcGj8XNiVEEUpib56+7oPGAWxUP45g9hn8PK65MKGarz5LULF5c/ob8P/lVxq2u8WjiXF6A\n",
              "X3lmGXZVkBr/C4Xn6bEr41pequoqoVHDWVpP8ICaYYj2rfvzpAClP7JSXZ0g+TVsWtR6bsyek9+N\n",
              "9cFAnqV6YTLU5d2Z8W9AJ5E/iPu7FR8lxALdgxyOyxkNxnbkXPchMAsJQ37ijPYe/bT3nS2wnLd8\n",
              "qByq2L7yhCZoABLVNOCb9gTOjQ9yjuT/micN9sl4FWH2BlOO0YztLjJG88VYUMQW7puYJguQF4Fz\n",
              "382ykaC/uixH9nt2a5gnzeT+L5AHqx3+fxPV+gd5uDE+reulw2OisCOZZh0HfYBGET2UXuuO4IFn\n",
              "x5/++PGstxasiKiNKY1aMuVkNhppOrJ6cxugaS+Rzh8MGjDjV7L8WbQJ6fmEJKt5wcVWjGrZ3Eeb\n",
              "xHqA0QNiGuvJXVPnE4LvfINUxTkV9Q6f3jF98gApCXVzdpum83cZYqeoV2r7GcEA6CMs0KnaUcyg\n",
              "3UgSpUlORtGW7JHekvjzbtqwzNfOYMWOvQTSNKDpGWI85hS358Cdj7ZGaRjUf3skLyHciGBzZT3F\n",
              "IbZmzXftYGqbnfcspOHd2VJ7iOs+7rYE2ue9ltbJF+qjtj0KcBxGW0LG+RktT19r6HEbgdQOEEqu\n",
              "ME8u+IDwnHoz+zQ+P1FSreEvqXAx5cUsSq0IJV0MWSRu/K+QxYXZDnCl/0454cg7/iPBtuwjxwjv\n",
              "LL2IZoAnIaHc4/KTulex3w9TwEgxtGhPMXpwVV/Rk2CCrUb+ShExqSJH9ivfzyA//hDqHhHnG8/4\n",
              "2oVQU21WdGeMGUtngqyF+azsYTLg+2Zd8V9kAEu90ykWuaN2IzadmAT61fXjEKdek6fafn/5B7mb\n",
              "YqvpjtAhaXmVDY3lnMbFkuS+eX56P/GtUd13jzAS/Dz3igjoNJl/l2aSSXo7+FsrLh/1UEskS07f\n",
              "8ZOdaL34kElITkWUBUHiYozy8EcKuQLZa7coC9h4P+uuynPmnPabteaS2MQo5sRo7DPytdpGkroH\n",
              "Zo5/0anU/F0WpKfk4QXgJBxlEm5Dcz9ZP9UQu25Ay5OwPOMsq0eso3joHJRkV/hHLWytNsOKe0va\n",
              "TN+yh6XAKd+XptYb+kF7ym/bbFSrfmGuH9dsfI2O2GDinAyNrd6m776F26Ktm3puxQYkk+7Yn/89\n",
              "TYZQPc4pxPyVG3gSau3J7iKGjS18kOJJGWr90bULxS6jdCj0LDPN/uYNk4MdlfKkmbMWT9zxpwP/\n",
              "wYRC+TUsafqMeisTHtKKp7W1+l6E3oeaf+qeKzCLdfLfNPECdv37syUl22qTOnTy/RO9f+Tg4hQr\n",
              "dJj/xGHlmJxaB8+PtKuhGoi6O7vHiYqplLlmBbPO0GHrUTlZiIp8bSJveD2U2kzm2NDA2h2iwgnf\n",
              "9BnPJ3rzSQRaR8PeXazJgPWmCWrRaeh7aft19aFpZyFtXn4qe3VBH9cW0QDAt/q5RBwAgx4AVd0i\n",
              "3IiQGyWm0u1gUYMN7/AmwaNbpzDHulqEbEtZvgpl57tmWtRhkErSoE37XlM/g6zZ0KhN1j8VGsWp\n",
              "JXPZzJrPrxPgN5nm8e9jUAwr83enAwJZPCc99MTOEUSGmEF60fXBMOc/bIe0odBIukCOGfdPXjhP\n",
              "NK8CAFDibkxaZV8mOF8GYQg2coDDn7KvNi39qdliA8s1UyEJk9hFX/HI0/lnKlfr/A1WY6ANPt8L\n",
              "TQzPXJt1n0mofmX8g6HBuA1BMRewlinJCgRQvf5CMPluNsEmZqhI4IMtNHBey2GEZNP18FRHjVMp\n",
              "zvGWWw8Y7tIkYI5CUXVxLJ0zHfux2gDRyDE/nekqzuhv+xrzsDnAHFqz6ir0DZ9HSIAs4nKhxSuZ\n",
              "mfvvjK5WuY+oQp21VsEo4pRZC0wemZI0lU45Mb+FTf7s+7F6mrJsmsTkOk8fhVM1g7NSs29ppJXW\n",
              "4VdStxITCgFSWGavmK2BU5yVOxerv7Xo247Db5jMmcJlJTPj46/Zj9PpcC8h1SzTNwhd/sAOlCyR\n",
              "lu8cDtk5mkuUW/9DY0bkE2zwFNt7IwqLwp+Vs9q5EKiST5nUDm/Zs4ARIHWasSCCUfmVZy/Q22Nq\n",
              "W7PzEyLV5VXUyCyaoo5fuNJiZrQJwSvuBwgh6pr8PIala64fVcCHFd0UWlQs9qTtFTAUT/dXSC5l\n",
              "Wof14CcPSUmbLHhGn2QB/UeisJdNSSpO9VEyaOIABdEPPypqBuFvwbzTQb6/wFxxIc1/xrQ+zT7c\n",
              "MPAPuywg8ohkQjfQKSaNs8iDDuCrn20p8XOncs84r0s50Nk/Pd5eIVjL1gNB4aDfHvH1YOqS1Sj0\n",
              "ZccqmnUgY/VDCfF/xDGa7+vn881WLuNFuyxGTrBJpU+Nb53y+OJ9APQElAdM8IvZfYOe8AD3Vsr0\n",
              "Tda1YeZvhMkK9IZgMOwnkb8Qpc44AKHAMXt88HoouLZBHFWoxYip6QqBevhbJZOdlBi6nb2qjCPK\n",
              "4a3cCqwjdpLeSWA7Cs4XD0DJSRNr6bdysFkiYJBV0Dxgpapt73ThEFFZYLCqSlC6yreobhM5Dzuz\n",
              "MKgBaL3FKqr4Uq4ahecT4vFAUXUQksaqHXkBtgUA2s6s/X00gfRCr08kx5XVt4ONrwRUaytf8Uof\n",
              "pOIzw5u3lYwaaKDCqJ5NdAMYP1T0FSUKSpXcmOmvvCh1w7VmIJi8GJeERrO/wl+LGGpud4Mwgj9J\n",
              "36AMGC7VfSZ+X98Ta+/YJ4nTNhIa3XE60n1YKJhCiUeNObga/zJVQ0UEDVCV3SrYwcCJ7R3P4Atd\n",
              "oQxuVFsRfWqL+u2Q9RRqfssnR4WuV9Iok4xjv7kk4EOKRccc5jAeIQfD6aaZwafMP66BPo62Zyl6\n",
              "2cZB7CePLO9udhmn1Mw4/Cbvim14DfgXYBDDj8L2BqXy2R3vBri6PUwyPgwS/D67N73TUp4NBS/g\n",
              "DaHuwMFMZhXbN/edV9pQrAj2gu2O5j81Kgec39AOwUGx2gsVsgAAAwAAoPCd//0AABE6QZokbEO/\n",
              "/qmWAL1h//40oFYALRzErgzbif8dhsUsaz7X5DmWJ6ler28ulmNwSHp1PBh+Jh4GyHYiuDDvfs6y\n",
              "salOp0/za/xqWxbCJHpiQ4uZzfDM+pQ/7X9wWfDxllv+yNuQobbGXfwLChcq4v+I/Wybjgu9rO2T\n",
              "hN+dPxRlcqKSMUIVanfGu7pKvTFNRKrkQ/CWr3Lk1aoaUczlljd4rHC/cWnAkZj0swW0XbjJkGTJ\n",
              "5CrAgEDUnP98dwzP6KT+xXlOt5jnHTFscKprbT4szfqvIXHPB+t+Ijcdr3EnfHcPdxAYbgvAVRyg\n",
              "CwK1090ocri567KAJWuCBfLmjEnbX7Z3h6K2TEvBHFOxJbJQI7Qd6xUG8S0YFxZAt30sygcOR3pD\n",
              "1o/M21u5d3cCEdztmYz5fKrwHP+h6Y2xN3sfBrjkfgNP0iPrCmmeJP8FSkpybhDLZ4LipWW2EUZM\n",
              "8P/19ghCpyIS82xfc3wGi4mrwxxQ6sUXV7qHSWIfKhFOYupMF/V+XksByFLwf5M4lu2F2LdzuL51\n",
              "vsTmC4u4AVlkfGQ98ep0UN8qTzNC5HZAQ5Rm7umHpb7/q8F+viBPhPfzt9qJ8oMV1AnGsB4mbUHv\n",
              "a+eTQCcbOHOdmzUAodXegV/ORisefo0H2NAdnyRReX2ToMlu+rp/kRmG4y2HdnAEHNIErKXO9QeT\n",
              "LR3EC5dHk/bx5o/7QaVctqcomiCzhMm8ocWI9G6JRveuKjssMXz3EmpcenwV/O3HXDOgX1cyXI2C\n",
              "d3KfryhPBmjIZ5VsRIYgcWWMfwDkbYenr4vxTG8p0EJevFE3MdVM7J+J/xVPQ30jvp47iChiq9Qx\n",
              "UC422y5vZAIhPvfWe8HOAw1Vzn0RGGvknizdEnDtOQjYDBAsHkrsJvOpGuZLOeO7oBWNXjc6QV6P\n",
              "c6zz64bnNUSB8IO+aQeKJHLSgj1GeQZDOBnWnpLw0Fz1uWuRpyV9dcb17lsznBTAwaW9Wskw7rZW\n",
              "cMBhhq9YVSDYQgaIA526jNKyLedgUAVx3QjI3OuuueVW6/Z8BkULA97x4BZBEzEn5AdhWbQxqVpb\n",
              "4bJyt6Nja/GBDGgVvtDJETXkBDhJRRFJjTVLrOqR/pyP9pG+YDAdRz4fNFCH/p3r0mCxQvY35tFq\n",
              "LjIFETapU/OQvnUp33sqRdHEZOPd7Tux6csXS5Ct93dEU5I3MH/BRJf/vfRvB+ouNDml0a0tK03k\n",
              "f8JLzp6DHh4uqXlVEUuZf/8QGQw8ZTi4990l2kdBBkGmW9Y25q7WPv505QyqcJ5IiJMGhTXhjnls\n",
              "mpg4F1lz0vZm9sD6XLRcTvJJyQEclNChU/AZdoyuodKnVgDyhEl3BcMZy0zsHcAs5KV+RQwFAzMW\n",
              "KgEqZn8VnDb1umTBeh1cTNBVz8sxfj0dU5qV5GF0JKjiTJQsDUYZZIMNsQ5NLayLjUaGsvhftDpF\n",
              "k/o8sTuslv6ZygdHN8mWpWvsH34iwG+vxs0c3ZrZEfDnRK+Sj3DgxHPQFjGN2gE3VLvGLsbbPe6S\n",
              "kyypy5KSfz8RIMhICYbC82hCjb5fX5oDpiDObkLne/CkFyVEtT/xIcWXVGJjg0gp97Ziaj2riTB1\n",
              "KZhKhasRKFrQQBnoXXR2DK85GfOkm2TUMZT+CwMU1bHOZem33+XBh/sbE9/ivxAVsdt8AiXWHngW\n",
              "1Nyy1+XADoPsElhXvDfIjnTAa0zTm2QQ7WZqtpQoiqSs3eswyZWMOTOICcKKp4WFXLyFXi+NQJNp\n",
              "pXDo7hvFA6E+pJvL1shYt9dUEkl6/LRg6AwHyzIBTxzn0V9I6dZZeadH0JKW7PS1CUjyiBv6cNSN\n",
              "v+RkbIq6BHSr+KUF+xFdmy6v3A83zgmnmvNaLT7QmZPp8zJ9Al58VEwqO1m4huf1JJfS8tAiR+6U\n",
              "LKEnzm5+69dwDufgyxnWp89PQkE+0lQm6ibo7/yb+p2I0IrZHAhmXEvI0WoeSyREsEzdTOEt9Eq6\n",
              "xiC2ps6pp1csMNliJ6ihiPAcCzW+8LVmSjVqY4JS7/MRrAvSy244FwcZRpX39bu3Dx5PDcaQWHNx\n",
              "WG3DE+phTAKl9ljh74Wc0oJt1szIl4FVXqFm12hkWcQXZhvkSg5gdT5fcHxKG8sGhwaMIyaU864y\n",
              "rRaySVUdg9HEGE2P8TUlOQC+6w2u+QtY7WBIxuWQBveURzdo3XRn33opgF1tZKYIYCIB2bAQrqYk\n",
              "/a5QvN9WVwaRTSaq2g88piSRYEsaphBZ/978XV66cRiU2QVBN0xy9P+GSVVVk5VHy3BqnN1oufSC\n",
              "9Z8dsY5D3DtqnVuGoLipdjC03DHQZw8ETCuFnqwSMGarJZKS7L4L10ugEx7UOFiDRgEm6DmKGdes\n",
              "/KLouF9CLoKT0q8CJZF0/iyeDgK6w2erCcryoa3uJbNnI2kKX0QeBcrlvJ1I7woE4jg45PfsQz+c\n",
              "ZjcxWNRIgLFEYU78+t2y8aNQ+SrQWPN3GDDPFKx0KIwcln7mS8rak5LfLkxCQdytokRgTt72UJlc\n",
              "0XQkiVWG+0xhHzDtAEr0YhQD1YuertST3YD3H00w6uT+3CX3HQyNJk85NQiKOjFB8Cm/8OqgPg6E\n",
              "l4vBj9QSLw7SSKGI87lBm54AkweH2xy/S+4ykvSsufZewX1EE565W/iEszFbXZN3SzfvQyXkm4Mg\n",
              "mAfSePzoGMlt531Kv6xUFGHedKw6Qcm+5fo4K54v7W+q3NZGfvirC3xsgHty1BZA/cKnzI9CbzFK\n",
              "nLDJA7uWc83E0se2HXDbhfY+ymELeAFpptCXG4m3m20dgfd5cKbpkjkJeIp06ww3Wl8bJskyDObO\n",
              "P/R1tL0kZLqqS9ZGWcxTa98eKF9pbOQSbKYXywYK+NQJWHCfjkz27IyUm5+7l99vadPryvOjTtdn\n",
              "vS8aq0qWSoJeh7fZHQHKqxcJK3jAr7IdvUQOB3z0BuEGXTcKJZjYgRXiCkAsvCZu9gZmIuKYtmfw\n",
              "t3Jd3snTNHNVXQ936efCotMbsPn1JFg9HLIUMb1mOvu7s79WmkW4f4BMSb0FkUKCiWOWyC+t7Aau\n",
              "ZJ+sdeA55WYh+bWg9xkXvn1YNsILR4eO70pV1K2Fke6g68Wm1hiGsbTRoIXyvwfLluNzDJgMC/Sf\n",
              "yOoO2SyWmIf5Q6lS0jmpbdbpJG6wPbvEWLXEI+X5WewbVIiJDLUVL7rvnO72PsJVjW5k/nScnESn\n",
              "BmcNxNrWvEmXLXa6xyjdnbTVxG8HMc2yDhH9SPTRl+hp5FF43fQj6faHQJLl6iU2Zp15JB1nqrjC\n",
              "dJsSIj8YuBv3hDWEoBGkNSshkCG+DdmEU5eoBYQ1e1SK5o1dylTTTV1U7Qz1RCm5ARXw8PLUKN41\n",
              "SneXCqAvpSu5QHfCar4j+YaYynU7AMGJPahwf7bsBQkM5qZE+NBbV/YKyEoDSSUWUF1Ey0rLyLUM\n",
              "JSp8bu2iM7YQaRKR411vTO4WjanmumAYXXsCc4Aad/Tz5b5sb4T+5j6oBzy84eSF7oNO1AI0YTFk\n",
              "/3Fa7iXdJ2/X3MumcyWA4ZQwvnlqV8l+dM1r0dD2sQAogA2sfqaQuoyyLGCxI1yya0tRvTd9pxFW\n",
              "3AdbZTBhbAR9AY0f8UCtzZx8jnm9FopLkyZ9Xtpm7o1ahme12VlkrGxoaLHo5cI8s+aG19/wRbFU\n",
              "dEg5sq/gpkGxwtB3/6oj56lJtTW5owHrL3WCxjDgwwXJptHHf+FLi3ls6dMn7jqxDkBcBYZ/UuM8\n",
              "MfhiGyrWfCp9QFzbrQ42059TTYP9RHKX/qzS0yn/xAVGOeA68jrP6Uk9UXTpe+5g8zynL73BzvIc\n",
              "3EN/65bR+4EnRJQDjOscfbyRAIxjZgVIN0VZBVAV3TZHbQ7qAl+aKUxVP65H1A5XWv2UpSnpl5/+\n",
              "AdV8SN0F2Sz/AMTrC0eJQiJLs4h5Fgue5lId+1RPFuSQ5kmMJM6J7i59ijLNwk0M6P91EsSK3Xlj\n",
              "y0F0GEim5A9eeMQ5RcOYyeFiZDvnaKNlhV1pbcepQK2HBrAR259j3UIn8p4/Cfoo2256YC/SQ1KM\n",
              "IGX0GkUby8+9ouJMAFhTu8NJn2AZVOrn4L3mqcb0ddLgPLTNyH7yG4r+w9KHBHdSZZj1FhgVxH9q\n",
              "fbdwk/nN74vFOJfT5gs6MVNimCAQ/jaEMR2Rnzxz91HtA2NN+sU2YtFK3ZE6LGYgykIIt4VecZM0\n",
              "EfCYpLkUKwqdAbCpFs2vj64BQLjenZ4hcE8eQGokOuEgwpCiZaNr7JL7Xqvq/R306eyyC3Y4sOK/\n",
              "PYWL4DIVlYTX26w97D3jxMAzltJfRfkiujReZw0om/6baHHHPT6owcKBo1yEg8mSYKqv5Mp24X9C\n",
              "hwuQBWTuE6vnzU/T6AdLBK6SHcGTrgJaktZ4zgt2vsNcC3W/x8c9s4KAe2hTYIAsGlrIfAfYatrp\n",
              "V7pv2F9+0L4QqiG+tQXqC69qkCoJsjb0OE83d1/J5WeU9Dfr0TnShCSGOCtTL0ubDgnICgoEXAX9\n",
              "gP4NgXi7hEkx6Ma3dohkZ4meSjVsAJyrCFQlhio6PBRW2zv701i45AxOt57z4qBWROnY5A/lmTQe\n",
              "ydUOFzmpkgjCrTjQ9Z76U2fH4yV0Tz0DXyajXWZSLCT8L0Sk1BDS+A0o58pu04/bc9Xh6BgY9MiN\n",
              "EQkBjAesV2s3ZB0zx5iev/iRaavRTVLY0/LHjM7ZbxOqytFTz8G1Zh7MlGWlsRaqs/evgTAtbJzv\n",
              "pjGKDli2v24a8L0G+UE43obtsUA7uw+3Oxrq6iLKHCsdqbCvIeq9wsaDE9p82c991DOPZd/PAabW\n",
              "MmSV7ecdky0sVbo8kxXZPYaqr11WmsYoclhT3ba0KnOfb0N3MNhjNpti85N1DUayLgt0stcl/lA2\n",
              "h3vT/QUMEmbAALtzJOrP356fAOP8N0MgMPdXZE1JR43tR2Ia6F/NCA0CJzZgJysyefiNQ6EnpJRy\n",
              "aaKjnrGXUqY/EkXh/GOoxkt46dV+zM8kZ/mK1G5rP564kaM37QhxDFBWEbgHjOwyj/pDWjVKP45R\n",
              "LAioPIY2crhQHrmAYnJmV4qP5ZH5+in5UvaoqWb/kCdlGdUcBUZTQldPTekSgrePqKvHXO0BsqHE\n",
              "nfSHLM3d/A/X3BUmdDCYi7mb4YWxYmspOSR5qFgXYPNsoujP5FVA2ObT4SWkmc/7uNfXkoA1E2O0\n",
              "JJNktYqc5UNs7IupDDmHac6d3oR2lUNlMT3venzpboqywA++sS/izlePfegTZDj5nGH0vJJalcyS\n",
              "JL556xGZwSr+EnCG/6joBLXuBGrJI+M9i3g6mA5BV9P/EzluCQc9bDsElzIVgqi+4pAYcmwAdpfl\n",
              "rZSmq3MZYUhsCtkvurCQhWkZAyG55LoLUW12eQx/woDw1jbdWkfRz6uhaCwBvhfjeEv72UgAeFvQ\n",
              "Ia4h7drZLqxuPR5Hv8+GZgIV9Dq7IhPXXETkQ8KA6EXrtMQRMkK90vq5OgmPk3tckdz5nmuXLiL4\n",
              "4FXaRxOM9E17MEA+6wTinys5DTQVDeJoUYchjmaf/bY81qaS9iZkpa3U0QmQARP8lTCIHWFlR5hB\n",
              "zIb+/EvZ78kRdzYdtj1ZNQDyLcVWOJR3BsYqZqomhXcCQsuU7DJO82d0NtBrbRJ4titaG/QaS9BI\n",
              "xFMzm0hniU0lihWAkd2S6h25BistQC/1I90buCA0irG3Bon6kQFDHQLS9LBbVdp8qXFAluBpR80w\n",
              "xUMwy23n1voZEweU/le039BKDqZ6nKmwTRKsbKx8F0uMLqsFM7I1Me4RcR1QvbEKm6otK6v9JfwT\n",
              "HWU8+kP1BzJ/we1/aX/LOah+R7Ab4eSqW8/RI3KziW2oiaB1GbwkSMMP3C6bX17K1zvZauJQbgcP\n",
              "ksMdXNONo0ov//Ezjp0QAAAOCkGeQniF/wDtwkgAlSlGPWCEQq3YBebb+1agVHKZkg8TfPf9N9nz\n",
              "9mro/1H9A4YpVEInz7OBJHa6c6uvXw4HSu3Usv8TbJRUlNF67ZDbyk3/8CWdQmfu2ySYz0rMhqBB\n",
              "zFCvObZtMOrPyGT+uc1szXAYrS4MAMwMJgxsI2QQEYUDt3mfgIM22YjENgFCSmb0p+MyFA//RwhH\n",
              "mu7zx0l4EO9++GeKeYqRYj7uDFpWfOegQYAnj/4jQMDt+ClfcV72LpTygRzVn1S/9+ZU0lpNl/Zq\n",
              "JPZiNUfC/GW7vDxmaK9DRWqHKXX+mCZZQfCJO3b4895M1EI3Yd+2GxsnPz2E2fKO+Trrfv8HBxTM\n",
              "m+TwS/x1Esgvlk2EGKXd0ngZm0Awf4FuPQfBF16S16g8Xk15FxqTuQclfJAj+pqPtACPbeTs1fPJ\n",
              "SQoUosjciKD4U2/w3ejJNS7WN4QseCmErhOLcS2VzhlDo8TROFhPlLkeKgjBbtnav1GyG50BL+80\n",
              "f8t2BtgRsxpYqPekROHGEK0jDICW1Kh4dTbHpeOwXE2U+lm+FZ6SqmGTC+pPsMW3OcZ7P5/sOwxs\n",
              "S5yoYQVcp3QO+zwtTpu5E5eaHYrgtFDuMA6Sbxu619Vz+unw6CF4GNT2ftohYrD48BJmmQyrQaBA\n",
              "o7dqhInDjQKFBz9uemm11xS3m+4S/xgM3nqY9Kzu1RbxfvF73uXXFIrTHY95ZU6hXwIVxlLT1HCz\n",
              "5WeqasGdIX1bqvJ+WGsvCsD8fcc6w+vJEKE+nK9sYjeB61kE9BKw8KGPWpY5BryY5DBYyBoiTGY6\n",
              "CCOiNN1kvrWlILxr8XiJhld9ZljuNYTFu0PudtPDxP5UpNHQm8ZNKvcIy1kUnQE+qXiAqJommmLS\n",
              "1bPG0HflX+/OEjA59RYNdu1XGHyet/Sc5Me8pSJ6OWm2fDhH4i5KWVPhVqJ9ER8+5YIe7AS7Ca9U\n",
              "pYyTfmjinwpEAyWn17Ohnd7LOwkU8dBxCwPgsAj+o8TZ9P+bQUMw6VAQrrRWPi995zIX2IdzE5V8\n",
              "S7Y1Oeh/bZmAFczlTE+MQzhzExqmX94A3/i2bZIivBUYsT8MKdgy/p+LJhn8zzJ/a9rcgzUHMdn5\n",
              "cjKtXNElLt4vqdolyRS5fgFBKOdMyKvJkyW6mE0IsDM1YZ/dHZNJNmStRDZU3xJwRt67uzhT/pFq\n",
              "f0AFH/sg3B1zrC8nFTxFtakcIGiS0eNEBJ0DnCGaD3BAtUHx0tj/1jRfC6nD33ge5/2w2ZupKaLG\n",
              "oHQO4BCQdXbem0XAUBUC0HBLkPsV53lj0fGGhppUhJpsiZ5AIVmToJ6DGltKaXcTgEwauwz2QQox\n",
              "SOrnBzefPLKseD/uyauby6+Bpxf0pxcki3zBWDO92h0UrwE1F33wg4QRry0y38cDfY9eR+HeCmp5\n",
              "vk9Fqbr2lR8WmRFT23AVuEG2we4RfvNMqQTnsCw/oSG7tyMzoNRa3zZ6hoSLZKKJN/hpv7txjV9u\n",
              "+1EEjpZ5AAAWFq++4dWrD1hX/1iUDEcRpFwAnHb4vZpCKl1eBXZhyJovQCkv74Z1nAQLd+tJUmov\n",
              "BmaOrEDO4lVxIhu9vEHBPzNueN5bSk7rxK1rpRFttcxGSRKd9/gazKnPwcaAFoVRQl4yRr83fQZw\n",
              "Cr4LHp4hPgOUmSWDMiK9CfzcJMBgmXfKnfasc5OSRibqDSH3D5Vs6+wm8jlz8fg5BGGzgeM11gR4\n",
              "dJuD7YjX80xaxjMS+W2G1py5/SXsSX2Sf3RYrnnDIf8263LVe9yjxBFg8AuwuA+jwFKYF5fB75NN\n",
              "eRjH54BTj2L26opNfbvGohmDj+gWELTY7Ma/mmk9bmSddUPXObUiKQvWJe2lwAG+0z8Tn0RTJxEb\n",
              "qDU99clMagXkJpX0sIyRj8NFeNi+FQDzc1G82FvwxAbhG7wM7YYclzV8k87hM73IXVbe7BC5oUtF\n",
              "RZWhQHE0i3+ZxHGAnSSOhMi8mALURa5OtJcpirwR6TpuINWlj5S4lH5C50QJ0TPkBf0wyUglEx0A\n",
              "h5LvxyXZOJJgUAb9U75hbjxUmsxKyPH6uw1WvCrv8bdGFFpOLzGruKHNjbtbeAqsuA6j6nTAn93B\n",
              "6ABguZxobsgQ8p34tEKvL189oDgxeMKCWLUgx+1UuCra6J/Y+GBWyDIk9IJ+veg9/ued8RHi6UIo\n",
              "ebgFhnxe5T/meVKx3CMXGJEKAPaAEsw7GNQAARD1jvi4nTKHPRmndvrh7K8raMTHKZWfCYFQrVk0\n",
              "XCYABqZ+LpdcnbM/bZVOGSUt/wzXz87ox3NTRqQVGumUS/J0Sbqf6wnKBSiHg7cznlLWg9gnJtvm\n",
              "uxju7pR8zqxihMUTcrK01s9e+RggduLUe4IpvM4bM4X2tcvdzse2q0HXti/UKymPrSkB4FLrj6y+\n",
              "SFGsY+OpX0Y1HBnMcBlCrIPiCrL6GjqBa+r7+c6Pf0ZwGoH73OKg8iJYs4TJ2hVaZQhyM/RjGhBk\n",
              "G7z7YeWArezV829IEc+HTyDPozKOlTKApSu4+G7i/1xsmz5T9XYRX9Q4dqz53nQRYGftXKJ+zakh\n",
              "O7pyVIAz88npp9LEfsQRmPcmDNVk/8WFNwL5wBJh301gzGu0MzPvdxnlnODiQXciriQ4iMYJxDpH\n",
              "4j21wYl+6MOIvEMLuhp2RszRJSrvS3s2BZszWnhaRWFMZEMi0zRoaW0lxD5/uSiHYlGauGLpRi+d\n",
              "S8ydjc5sNV0pw/Ngn324Ev3yqvbCFNxwqeQ9ld32k/iXrz1w8m4x3fSvhlnCncQxUqAJiS3DO6lX\n",
              "1j31KvhtPujRD0cC8GMm52ONAddQuTMGwao+C734XtWEz3bZLyvvxfi8nHXUAn7nHV2no9isjVpE\n",
              "Amtw9o1c85r9xm2IkEu6AdRKhk9seF9Cx32nY+pL/G5rzKFZn/m+pdKHG++N6piGlaBj4GRJzVQW\n",
              "qoPQgLK7HzGe4zHpfKDYBwmXCjZzNFYN3ol2sF8pEdbwaIe8WmIQ7g4OMFZgDkIC94CllQ4ZzGt1\n",
              "VHFW6P5y9QmFbid94R1OHfzHialK9fV2YqLb2QjlttMkboijHEvKfgSRje6WobTtY/SbzGgDU79o\n",
              "Xb6/ffR5xZCBHpVYNy8vx1crQIZfqOYghDaWIm9iuYYfjfZk6kAf2VL7K996p5iOet1CjN5qZB70\n",
              "6NjYR6l+yJ5vmBnmY//3P/HzhWxMHK0hdNNOaogOZgg91S5VV2ZFokO1Neq7c17VfCEfHdpaGQxD\n",
              "R2Ff0JTJjt0C6lXjmtJxJxoP1yTMphEbhjeCwott7EinF1XmVoR8Ll9Mnvt2iVb9cn8GK0uq9zbQ\n",
              "eJcIg7zmFzfTDtGuBICgZqofl5+nKdsObT1nJZG6mB2zInGN5TIqGkhG4RNOge4FK6guwlwvVAml\n",
              "cBwfYwiX+6baDva6Kk4XPzYVezosPznRaWsHY2WUK3HFEfL6CXsT2otpMrkVUdlwWDu7Z4t7nTOa\n",
              "kKl2UFn0wuSh2+B7lLHAyUlLnkEJ+WcrMwI94WoCMqNmf+78oIPh8shYCAYIm7IYPqAxLix7of4L\n",
              "6nzub+fehavh1EEEkWRCrHCz9ZsFCSvSbRgCkEbEX1gitAiQ3IzouS5w1uocsYl5GC4Su2VcLv4N\n",
              "wql863zR+9GrOgVTDz0ScEsZWPvUDaSWh734e0eQrATwpqzV6Tb5b88AiWxgtp3WtlauDvqVn3bZ\n",
              "+4xadj1SeIkrmAlIKZZp6d0KtNcu/Q++27PGfuOy8mDpaSbocjvREekSL1FsP+LEf1TpB+5AAMJD\n",
              "vn7W+At2mdLc6qj92Ak6gvtniQuiYBm8jDhs/TdFYrwejwuxvpBR5OlIe1Rxja9DEDB1ZFZ87C8t\n",
              "EnAYZMq+8BhwjK103JD3cET5hvNAtzDxPYXMd11lm1WTqipaNZoa54p9ecpsZAVN75I0Xrl/wgTf\n",
              "W5ng53q8kOUpqXgkqqL16UUTflBiUeEAGto4/4PDb15JWEPKBLfg+GXt9M6rhKhPVXdws97WwW0c\n",
              "fvC8uSGMsgeTzTOm/LPghWPaVjDMLCtBWpkSjb0Xf46XfCGb8UHSP6ycwTEe1DJlXJu7fOdzipSJ\n",
              "mac41HF1OI4kfZD9hYUuQDj/4g6FNMZuQIxKa2WylTfL3BQl56s1gnvz6/M1ZSC8jFpL6d7M9fG5\n",
              "NOL4fpEpdWaQi7umVYXloW1NENFBRjgx+rtf8MGPa0Npf6VsjVzxmKRWZCxw4cZZMXkroB5hWBaE\n",
              "GW+Alf2hHk1VVbPChCZ1fESPgdv1CR6z+t3giQA2PtIh5Xh1/lrsn+Pq6qeQIDXJxVvZe8BuKlnb\n",
              "tB0PoOjIEfvnetJhKqraThg/67vMl6dqcAdXo1O7eJG6K/Jlk60uejyMfpl+NVu8C38voWlykmpy\n",
              "QWTYH2yOsB1XJ1YDr7+jLoQM+f4mEhTCSJpndDzFhPQFMAVXrAvF3YmJ0iw27xpUypVJPoMBBrQ5\n",
              "iBkLcBuytoW2pVRzGwPLyVNwJeubNKumU6NT2N4W7iSs8x1ndIQKK7JYRF9yRLMPeFX+OTPAYwLQ\n",
              "CHbcoNAOy/PQowSxVHoeGJyVpK/K30scnIBoGx9RJVmk6QnT1s1TvQsWq55YXhphEo56DQd5PmSh\n",
              "vOm+fg3Tcrd27NnhxNY+xAkfm959W2tNd8depYWyVzJ9s4pteP6KjoQ55mD/hZXchRZbK0aus/5R\n",
              "qCWlAR2+zn0ltMuEg52rnCjpk+cdi9TPUES7CDvhQawvyRkpZUM5HP56+yGbkahk2Pd7ef956mb0\n",
              "WyzRpXGSzlASKL8gidRJxnWqYAvjEQAACWYBnmF0Qr8C7yGQnPe7+IhrABuhsWXqVGXVaGV1CWIm\n",
              "0mDjL/Ad2bjgfPvJDJJU/CxiajjJTssI1DrpKyaWlJt/en0zlW+1D8MKo0+uESdciyb6sbv0RMJV\n",
              "0Lt2FJDJJsTJvsdRlMbrl4xyMq4gVPs0f8nr8HryjaXX21qQ0HCdG4R15l9T8mZGIfpjbJ22W2kY\n",
              "ddx8jqA1dH2NRJJspqGc5L+mbJpW3Om9yffjqYu+F/qFUTAa4i490qSxOLdBjv+E5lnZvWgl5w1w\n",
              "YJnUrDG8lS0POdvdcKIopfHFdIJtJ0Eo8djDWaAu+kHJKyllFKK30RUkACbVFkVYKAgoEIqj/88m\n",
              "sKz+GWgCCBij3b2YkX+cRp3PJOknwiwsgWPFfyv9z/BLMXMpqBvyj3gR7FyI3wZif9SSMAlYTEjm\n",
              "yYTtwPkxtMw7StEACqb0hf9ABF1Kp07CWRIwyGy0zC90eYiXdmQ4u3yXTEKPC1gqlT/pmB4+F9Nl\n",
              "bodUzJy7RW07WgM57Z4B8CoDKexC1G5tJ4gvCGrfHfw1TChSkBOb09N+geyxEpMhUxUtsA6KqUI5\n",
              "iR+5BakxfGqMzDcDS6/5fyQKXtSVucfLdrxMpKU6dLNoxp9jHcuTbZ2A/eSEngrNo7dP0xf9O7TZ\n",
              "yEx4uvTQIH/oA87eKPgJrch1WNMQ7jRXSZsL8N09GtoUlvAuFnCTPoD/kXAbc6cn22wzlBCHvnP1\n",
              "o41fuelYdjrLDv+u/wMIcUJlFoCn1XfzY5Qz57onccydW9K64MHQ8uzIRL5vNbCFDp4MhPxV7qHl\n",
              "pfPuqo+dyGt5LSBWy6VZw3Ooy0gvhy6SK9PMo+oSKMCA1I6OYLmwFkO4K5ua/ZPl5OkyBf8xOZX7\n",
              "fqMHfjcrIcqca7ubb39dkzuce1tO/Vk+cvIasZDMgTuGrsD2ej1uTsYx9rD4GR9RUtffKoEG9x+1\n",
              "gafD6FuE2YvRdq+XgwtP1MXwbYSbMIOPreqBWZd0eQzYk742by7665yYiaHVj5Hi+i45pVUc7hJf\n",
              "eDxnISz+gqiD0m2d9/DNsTY2WG1TAInXbXR85BtDn4NfE5kvXmRmDrs4QlMeELbpuefxxkm0asoq\n",
              "u3ouve6A3c/PyIVkPlykyOXGocGYaUvDUDlK5tqfAXj3Mcfw1RJveu0ccwW3dvnkTygzL5Yvmudi\n",
              "rf71WjcLqgGI07AEjZKF/s15/5bJyygiuCBWPruN5m5vWvnzHQMm2a+6H9+wO8UP3++ed8ylCvG3\n",
              "z7MFWJlk6/KS+Z5LRnH/8/epgtt3hSoN89hZguIDEvfJSPjbeNnOn1MhdIdJwx+zAswDlakKomus\n",
              "tDndgO2S2pINUprDbINztlVolcBMueBb7c69VEyk3yLnBANQgYg+OQmjjCFFTQZdWGyQfkN4NUdn\n",
              "eYmtjv8CJX+LrYfym9Zu24rChtAg57bguaR5rJiTLNvGf8JgCnZPS0Ed/vP1ViHZhVnCU1LL4NZ3\n",
              "3ygt4dPohlMtBflA9hux+xNLzog+pFZ519Id6UtcCOQGn2Da4bBKira1bU5/mEaEsLdtWtyFjqwb\n",
              "JJbMxQmR4PggEwWBvgmL5ECO8wKQY0b6rT/LCizdHYJpHHuuzWagTXjX4kFzLklpEaOSvAAmNSll\n",
              "T+1Ie6526f4EM9EiK3iz2KQ5jBQ+bbzLVuyzlJLls1B1o3hIIb+Wb4gRQ5IKNpDlUGvf30g1+Cgr\n",
              "gKiWmEn6ceojy9K/hBoZB0KbqfrRpDh06lfYHQgoFwSgNYiBxbC9bWLVHxt7cRJyzaJwSmsWVa7u\n",
              "FgnbkmGUaKTXaoeHB+B3ZgErxYl+1v1dYwlRpyg0BvAHTiufj7TGEZShwA2d6Iz3nNZcZdnIwv7l\n",
              "KPFYUMItPd5jllQ9wkjRAzylovE/8AREC4CryVJqzQk/y8IrmRvtuq9ihs7v2g41AoUmLLD9T7HX\n",
              "/+CKfZJcPKfGgFEWEBRTZA4z6ho9TBo/0x79Ol4zsmY1xj86ZWLpbAScA1mAA5s2lBY8XzpY+YnI\n",
              "rxyG3w7FtLTOGgOIhzCc+M5hcT4QsFKYeYFL3X3JaK5fmLJZYSe+CcgdctlxMmH3V2m2/wmR9zm9\n",
              "NOEV6ko1KayoHvBheyqPflKxW6aPSvhhIvPlqhj2JnandZqdrZR3fqnjYs7GWeym8zwZpshdCcmd\n",
              "G7ru/l/zHA+vfZVQMdELmTLss7DEziOG2RlKFkOV2o+5EjfBRcREjQYaAa9Kcc8fMBgIIy1ScRV9\n",
              "T/jcmC3NXO7offY2WMd70iA3lAb2YgjEnCMeDTVo0Ue8a+c9CstMOM7ZdYFuuI7eCpJ47Oyujcri\n",
              "ZGJw++0NwKjz8bF8GTa13h++8bwDqzvXvcpY9eX/f+RP8SKsRf0TxW9rFLN3noYCs+3n2fYVz+1J\n",
              "1XWag4QlTSH4ftLIk6RCGbawMuOxP+iQQmUoSrhD3CcEbUBWOhwptQzRrYH+cyvzFjwFQZXngv6V\n",
              "fS5dxLVsibgQVvkt/VUUY8zirLgUUxdiuE5sG/hHByYAmpRnk/9VUFHsaDGg4wCyE6cvvmhHB+CP\n",
              "yivpE0eUKe/+vfvOQXQPXnqJhssNn1WizELMls8proR32rRAlbKqe2C++QnDkfK5p/4de21gtTWt\n",
              "cybF2ltHftCyiVf/sFGD7L7Dpnv67ZCnR9cQvNUOpIj9aADECth9HdnJHywvfdbRQc9VBtapkfH8\n",
              "f/ctJiFkMN30hUrert9kswBHrBxH8t5D760dhCBtbVwEwZS3pf7loym35pMn+k+YFsnLCV8NNC5y\n",
              "HfQxSnQ1tFd+ahH0IfalbIgRhQDcBK1iEDog2/EFIjSOCtBU+rbjB/xl3U085AUTPtU21CabwPBY\n",
              "PdueU0uAjjiYIFRRwig2/vDtLgKvqoNawYagB2YGVMDSCVJ8znAW8yd1rTPlV9/c8KkuvjNvCmix\n",
              "HmMx223AzU4mRae6PrqEuU0gKXTtAlGAooHM1AcLseUn8O/TnaYkG+s/9pNwyj0CzDi6VEx4WV5n\n",
              "1KEBfgMUdr1nnu+ARa9st7sGkYiLM+nv6lbjuS5x+m/v5tlZa1yAklmsREkeyiKdsNt19gV0V58K\n",
              "0qxkEf+XKT4x+05eIQWggTIIGC9S451SA1jNN39aLDE3+rOB8guMEIzDtcSRg06omfTJPk7dgKnj\n",
              "RyaAoLmzg1VrYiV4PMPo2M/NChSDRn9u1YbR8D4yycM4YHvFvUgAAAqzAZ5jakK/Au2ieQqJ2LZY\n",
              "pFFnyiwAXrqjsOsaEDqvAwuWoxdElLeT6/9qv8Tpv+zfAvtxEJrrxzoGevIruPg3niZr4sY811us\n",
              "qvlsW8i6Ay0rEQ8FSjKJNmPP6LzG3/cMzpIjOrO/6AQKSZZfD5MTldqp6PNXW7rnJuWsBGtLnmoG\n",
              "Y/v2jZmDUbVr2URyc7Pji8ZMnofoazaijWFBGsNAV/ns+ZOb2WbPx6f8MRgWnzYdLfTPhqA69azW\n",
              "1/EZhrGcNPnlvzQK4waxkCOhyDVYCF67CuceFhda49QGTGdVGGfv9MGJvRuS+7PpqshnQ01lnciC\n",
              "F6n2/+0IS08MqIquEGbhzQbWhPxGHh1d7RYpSnxDB4+ASM7sZ/2vUNfFvU54CxsjH+ygoobXbjv0\n",
              "c/O9iGIZLHP9aUpb/ku9uj36gdYmox2dUhhq96Cfqk3bhbK6+EGRslJh8/T2iOS8ArWIvqBCgyNQ\n",
              "4YzWWR//rHmQTDll3mPXESarVkdk33Z7t1blcM2uI5XlWTfdLvT6UmCRDpQHJpbflN5PG8jzqIyb\n",
              "ubmR9GjGjmLSoGqa3uUPaSK7E7aU5otOLSne1E6ubqyDOdg4DqfwJupyVw7o84DyltIcqAZPM76s\n",
              "dGkcUe+GnBwwbED7HJKtmG9YJRScrBKDoJD590Z1LP7v9lDtRh030ktI9yWWw2t43XyBkMgk0ALh\n",
              "XCT2wdv7lkqlyHQxALQ7zOi8a6qtrcnvnV/5bSEqcgzGEqOfnihSX7lzdLiUIGjVA4BVEz8LZkBB\n",
              "g4mvEmkB0dt5n+WjcjoNFO1aKNSJa5FMDhkA7Dp3h824CwluOcYnt/oY1AXxXOTdJyvBG53rCApU\n",
              "8LB4/Fg9Km7JNNqkUfKzWIqHosqcCgNdUH2vw3OugOD898Yj8yWb4Wx2oBt2Y90fy5fId58LyWVb\n",
              "wi0fB20R+OC1BYCg/0YHi0kxRMj/jFnZr7v+v8amNdjExyuw1nC58W16GMcS2WGq9csi6GIMq9K9\n",
              "qlNVVbaRFufmDvCs8nLIXYZQh0QFYFRqqSLIWuiHZz0Z354LZu8/pKbTW0kd4cmk4JpiHgiQ/J5p\n",
              "2VVr22+EbthNgTRPR1IONYdstXY0W9rYrNKvOuzB2pKfwftuE4GPztNnJpmIMUMbxvJnDAX0Zt+i\n",
              "+YofLtsigk6/nGD9EfK92Qh9vLQw88QxsCV0fiSoS1EyRIQStO4Rh5YFpxH3PT/Ha8HFZiejL6x7\n",
              "QXLNhRUa63TrV4kTHKmiw/SkCtUSvIvGhQ28w4WdLVAEKnZRGG94TISYnOcQ7dcfSpS2hGQSu9fL\n",
              "ZvMbik4sEZXj3wjEB5LGvWHIwXbJQsY5n657RMsQtD9fttE/VkOPktTu+ch02UtD/H7XrIWSEzmv\n",
              "klKaPGow/mURGCSLhDZnd0zmqFwariGM3aceV5bHyzngrpHK2wHEm2TqIKgz7C9KfTFhEk/0qGb1\n",
              "vqu6alpYUEjkM3TEu4eDJ+VpbtDjvwh80k4Ekx0cNMTlqI9acI/BC9ek2o5w+bMSIXSl4VqcT/nT\n",
              "E1237hTr3KtIo7GZ49nsKMn+3yjAYOE/etMifUfa/e/ceGL5Em3V421BK9fZNqI20JcSZwKeihkc\n",
              "8z4GXEdBMWNSCUJXYSnZgotzB5OadKOln9xMV7c/xY8+9oPKWAEd5sMODpRAVFhRG1am1AjUCUdh\n",
              "Q/r8qen5sDkJ+BAwHEvOTWa4jStGJ9QB95n/Sn/4yXY8v1oxjxCnDUt9VBuXk//TRdUjTXRNmM4N\n",
              "2zn7Yl+tkRucJ/80EbDKGULFM2070Td/OUPdHybrtY6tMHBHv1YaHxdhAXUHu7+rWQfURcn2Nj6G\n",
              "xSfmDjUc6DuwZIwSaZhheEaPkfTg5UEbge1rhLQDELSMywdrio4yiN8/Vsfrb+YJ1W2qeC7oLljD\n",
              "kC/m9rzXYBDcD2FGBOYFgNLXS4vanN864eF8tLwG2drtAu+yXSYxnVpfhj/semGImHyuv2zOMB0C\n",
              "auYMBcit9OtIE4eNjU89tsf7KzjMunDM/NZqoNK6ZmsrFdZfW9Fgeg2/N8cFcIUmIfg0dG/fjJWT\n",
              "pC5pLR+z/ne9HkG2myjxwMSewRG/0Kz/ufQGrlQ9P7icsbhWxCRoiyNNASbuM4ZZUn8hNicGHcrU\n",
              "YfdyVzsRlotAIkWy9spvUFXdlk8x3mEnMN/xmcxS3XyxNqejQqVPp8MDaTECzdF2wOUqfvsvsRAl\n",
              "KEHy6TXUV0K9bM5kzGC1fbsRMFxrG1T6IuUizBqQujhyYwqEy3FGcLw/O+k0/BlgNPn3cC2/3tCM\n",
              "S+p59w6courki/hM7zgRvNhPXmmaCE5ws7s1hlzjZNE05FWz2CVuZihg0ig1WG6xeOhGoSsqJuKM\n",
              "8ViUHAk9VioATn8akF502deOA3ZoTB20/vDKpVNS8X8rXL8bKRlP2CEG9MHeboOab5tOU9U2AnLv\n",
              "ArcOQOAmvV/T6e2HvTN/cLP4fYwg4iKfK/OjvfCevXHHkqQSqRikVTqRgV00k4+HPga27UPyUjbp\n",
              "pkp5ZtPj28Q/Uo4oTOYeicEEkakTsmzo/JbfsObwbtmYQ3KabaIZcL2mEuak2DqtQhDQop1WNbtX\n",
              "YMQuoAAt15eWWPs2i+kR8umNHy6Kz00eaUqNUXWjfs+sWPdsmReXoe5FawOVY7+Dnl/BRmi7rO2q\n",
              "C/h8XrtR2c4RT+WZqXsCPDc0Crs/NBnG1i9amf/RcOsbcwMcemkpFWSOqRuaBzzbtZefmrW+Xe4U\n",
              "8qdMuuL9ZXvQzBIxpoCWrA0+h0JLPPgzdwJARrk9wH5KN2HBHhxer1SdlRtDbsn/A0Fs+p8p1Qu6\n",
              "eoQdkwHzj9Lw15kbum3XBP5gGxg47gmcJvqI3/g/8vOsCRkbIDUhjXzFM2HraEJC89mTMGodG9T3\n",
              "hrMVHi+LKio0PEblyJmQ4MF4Cj/1Yy1xkY0T+6/ksRbcWNnlXswWeG9lVM/xEWJxrqs+TI3Q9GBk\n",
              "Xm6i7AWb9aazNgjCMHTMekfQmot5Ll2HUYpQhaM6uBztefW7dkGIuvya84iO1WLEIcdDeU7pCJQU\n",
              "PuAp0n7kVM5Y5TcX7Xce5taaxDobOSIDKAlLTsAeK4jQxs6AW6mhVhQ2awzc9xftvALlmRSg3KEJ\n",
              "ZNPlRD1MNPN7XyuOugCkOlFReZeS6/aJFObTeYMZwTMyhj6UpJHUe1Pth3YtHU9wrLOi4TQPm8Oq\n",
              "6VkIA8u+S6efr/hnbEVXadegJDq+W4tw2F6/8UgHaX1tDWh6l/dnlkHP7ThozRUihNTf51xG8k0+\n",
              "HXAEzPzqZbJ1MBOUDpW6SBYfuufEKfi2G9tSoip0hhfsgwIJpVpjOJIdhBtHY6OsD9XArM9UH5HY\n",
              "TBdirCbGKKnYHmIMA34v42X3/w+oagicB5uGSCrneBSQjbZlIbkIsmVpsFEAYJlZjYb1559ZBAT1\n",
              "PX12WTAYn50F3NwYv5ijqdxv9YW2HwBZd+AuBNhoOa2SX7tOEU9QVydlN0xuxP5VEuFL2CeFs1yo\n",
              "FxFaoCmUEZwNFNu9HzNWQeHWJ2hbGct5shXGbzfuu9V+qYryJO6VMcPDyOjMdb/QMd1j/L8o652x\n",
              "JmzDU4qhP01/s71Kn65zvJT1c1pfcMSnMi9m4hGlyamw+4gnWXc5rI3SY4sZAAALaEGaaEmoQWiZ\n",
              "TAh3//6plgC8B2sABUWBD2zIP6D/M84mpvxPRNF3mc/AmKP8qrYlzvt110G0c8j4dAipwMUFy1aL\n",
              "uIMtnoKeWbfW9B8bA8DL9RyIw2NaxAfhXf56L1/xOYRo95K/z+QtUNnAlMp1MZWtJouPREasL5zj\n",
              "J1xu/WuWF2La3Fr98YKiqnStBHZ/L7TevYMbAUlHi5VGGFRsFRD9nMe2hoM++6+L232i+VVYfTZf\n",
              "Z0h8u+BNuwFmo9s1wBV5cbmflaqV5H/NtXS0HndUP/52QFk0NH3hmi2E8YW/+drfBzSSjr4J6kWR\n",
              "uesL2Hr3DZUu8LkBlh3g9+9GmOdhBAmS48SMc7mRf86FIRkBAIJDj6IC0thoxGvT47sLTUiF6FZr\n",
              "U6Dc9VVvk//xCR1LdYxQhrENsEymEh5P1SKGo8G8JN+qyXwP76Qf6w8ZxDJUf/fGz3S8fXMNm3+v\n",
              "/Lm2x+PJuLXpBe/dm9kOAS9zQIei9eIy/aUvA6FZWjrc2jXs6bKGOh2FW+gN+Dk8Hg9Y2v8KZei6\n",
              "WI793BbkNA9HH2UUcULmSzXcwKsekh+ulK7w1E3Mni81qVFzdPoPkTme4FaKGeDaOlmDCPu36AHS\n",
              "XNlgMOUAWej7I5lAVAPpJc+Jgvgbm+qxc6Dssb328hS/DAFyJdK32R9P3kGSpVBTv06KYWiqlZSm\n",
              "f8SY/YvQNN3w8unEaAErgvRFrlQopfkRLP1Dv8jRyRd1++7z5qmR0pdT51zUm0erci0R/TukuWV+\n",
              "yYqbQtEnj7Dlg4MhSrtVKzqz2vfHKDeb01ERNnfg0vXnV7CaKb9pzpNHXGOUsVi0lnTvsWvVUm+R\n",
              "SsY/q4/1YoJOFvpbqLSs1lm+AuFTpRzEEcsKkjm28+idNpBbYM5VKP5jAUWQDmSGApUJDc6dqyAC\n",
              "oZ2u9N3ovO4yJLp6mWn/1u/YITV5bfXrf7MBCpu3i6Fbd7hpBWkjpRVmm0pGkwFSGIDJvee8xBVV\n",
              "dOLT2tiK19hcmQLtssy3tHqj/cVXFsOrp3hJuLVBXhgefxyYFnGm6ZuKXjCsyG1xwSJaOEj5+wpM\n",
              "PPJYu4uJkXNat7rVVWWnTEnII0UW91L/Mg1+GNFd26qkGHGpNoqw6Y5GoTsvjVsGPaMtJZvyBl73\n",
              "08d//xSrQL4KKro+7b6MJo0O6iGR/ONNU2EUAjv6v2vSEGLuabgq2ff1WuxaHm2o1TRyhJxXt1OO\n",
              "N2Jupnqr689++jEtVtjXppSG4ulXa0QzTjNuOZ0TXS4S496EoScVxGByf0u6nPyN983bdnH8jjn4\n",
              "jkGF11UDmYsdnArLPHQGQvDf8mLyUXvs9AcQsOj/aKcYKmexl6jtxawXzh8n5T8x1xaAu3a4nGhr\n",
              "NhynbBj3ZurveXI/4sK6vzxloztwUhblDOOou7uKMiZDHBYO0LimZmGwSX4yKD42y/FFsWPzDhdX\n",
              "t8069U03wXjh4RjYMp/fPkjglvMsmpn2aR8Ol9dRRQZt41WU8RwdzZ7YLsCuAJD5TmnlEKFv3PgS\n",
              "mRpey/k/ISlLQD3HvSVaEppnLzi1tayHkrD5JMx82QnhSvCZjU2sariBqRXQonT/5LHixiVgvDPm\n",
              "syg6VtOW9j2TrIZ0XIIsd10NkKKCBjSYenJxS2b/cw60XT0uzjlFpAXbIX42q5rAXR4jm4NMlQG/\n",
              "sh49lkR6NhYh7qM7+PkIpF+Robm3jkQDU/1Ef9k3uSaFi/SeH4nxysedzkAhQc45U+fqFoc/4Pv6\n",
              "AaJZqoeK2MLU+3HMaL3fzgqRdfwsHB6BlNq1O0SeLyOQKyEmQn+MgoUiL3r/NPkxpqsI/D8qTCNT\n",
              "50j/bSbFWA6ysrjfv3Boc9DWrZ+5hBa9ZHf8yiZWvGxUFqaAAB4ybMMTkTIyjHvrsC7Ic7Modta1\n",
              "2/sPUiN4hgJSHTK03GEYqsBKttx2XRjUTBFYZShpUo91ZowVx6HNAxTidq8n1tE8fLvsZrX0zirc\n",
              "A1r4hBJ/Y8vz0JLPmCzJ0qimpQsHN7sw9FLW8Qgm/Znl1IbBGF056ibLtBcR5mC0Jd4JLQJqMtMU\n",
              "xIjhZ4zAjjiPYKPqw3wrJsm8SX0ijYGLMAxiWKGunCnB9EkFZLonBJbvYwrocI/bw1nasdm7lmx1\n",
              "kODPFNE/mQQi3iBf/VLUfCCCOuipmYyVL8NKdKB+93cGAvIkZmaaDcfP973CWbNtbBl3JtcqFrX3\n",
              "Ks9q1ap7AH2b5Zxxplxg1obsTosnIQmPrAeywhEFjN5643W1pFH0X1LXZuAbl37uOW9hFmwMIfA0\n",
              "2uD+iLzg/XV+pVy2YhAh7u3SWQif3hXqI8lBetF2GC9R+Y6LMND++i9gT4aVGnxbSL3F/uL8VByt\n",
              "w2q87FcrMn/23ha/xrjk1kBba8bD6DmYVvRZMcfcHNVdvEIuRM+l7W+wBcCh8cRHWu/9qxF1JrcN\n",
              "x88mClwQj/qEin8ygyMsQOdhHynNQV7c3RVSqRw5Aq3+7ojMGyV8aok6VCDMT29wPDdBM5pV0O5O\n",
              "r6ZJPTRH9TolbCbl0keeUrBGyvY8oD2LuuyVIK2oDUUo1ltPqV8b+haab6eMbLNEJ9UKP6UPnPIv\n",
              "7QQxZ+9YcKwclz39cDBZlCqRgRrTZ4z1i5RhGJ/6+ialzlvq0MwJZMsGES5l9UBVpi9+cFf86Zf7\n",
              "MFHmBXLA5BzAtasSAL/s9/ixrTQPkWgTxGoD1pOvNgpmGqPg2Y2nAyFUAnyMZBftZcSV7XgUjcsy\n",
              "JA0TmNwpbAaGxMYsw1RSYWc07XN1W/Tzdg5vtXheAaAp//4RtlgcyasOVpncxwHY+n2in1DuzijA\n",
              "9S1NIYTB5m0boAKc95tzGiZUY7e5wdBUCLe6CCTjSZNyHjKcHy2CZf4AN6IUfiq08ng58eYETscq\n",
              "/yZ9L8Xs66ADEacaZGwLI4sq+d8/85eU4Uo/bXlIFifjHglw9hPepjerZBVTaNM9DK59I1eBjg9V\n",
              "Pwl+MUrnQXfov4zht/nEwG8VbETlmcVJ2oMQoANKH/lcC0zfxqXNIQuFKBGXtPqmpuu8qqVf3rZf\n",
              "E73BmK6zk3trvtN2d4IrSrLvM79WiicSYoHahdJBTFzpl0AbIzIUQJcBp7R3FFGb8vvr+RI+gBod\n",
              "eOAuDZwRQ5HeRJh5+6mGL/AOh+KHnAVlS+cSXypZD5VdgxLlL4PNzIWG8KJDdpu6bnz07inJfnUt\n",
              "mKYvIhZ4nWcbh2AzUB9HtH+Nl0rSUVUVDE89OjcbZK79PJ4LxYHbkJz9R1r2Dzjo1TOhJOhlqPmD\n",
              "ywg8xbrLvrwhSFJLLG4BfwwgN7P4xlqyLJx+xeyjvnyYL3zTtJDUa+kzdaqGqfgbzwkjDn7WJrh8\n",
              "o5h5z8x5eDGf78BOnYg32G7kvHArvC55O82kMpqe6NSCUU9Tln3IGSxaSEajq0TR7hgkPNUkxARO\n",
              "hG4mJa3tCYB7i9RQPYafNuLg5eS9jFqpeCP8QA2+IsrjEllbbWsm+zZifTasSW8MXO1j0ED92r54\n",
              "ch9eCt9z4mbMwnY/082NXb0lXlW5CTucbHJ2jI93WIofcpK0Z5JzN4wFEQcAqLRWVJbuBVF7Qqah\n",
              "6y2mWS6o/pMrnqHBvn6xM4fSCOmRLsChyBIit4mHEnqbkBna1CYe1sLQgZODhsEVpQY4jC1WXnNE\n",
              "/WxOiQXsQDMU9KZCdPjKYrIxeLO02t1nuj71+YWih9MNeaVm0gPm9rpXknk0XKkRH1fK0aspAlGD\n",
              "pxj/uGe3aFNaHkJ7lEpi08U5cKlDzeY6TYmTmprtQN6XB/Iww2J6Xy3ijBcreNG0k8W0kHGvltzY\n",
              "pKntftp1bl0ZAwzH1kz5qrxb9V6RqS9erSXyDbTBGC10S/yTz7pLDdYCuWC5JsLA5Jq8pDNj4u5X\n",
              "1dr0x0EAAAlkQZ6GRREsL/8A7Zn4AH4tcJdaYamUhc0Nt+QihTE3aS2no362gtBHDFOFJgXu2WRr\n",
              "i7fa+pP9QIoxMHDt1QoSU70qnBOeJAc3X1NqZeurX48AUxwChe96/CzEqXlKmawSVb04bF+9/Kd/\n",
              "ITsNjot8f52S/EzEzoDsiM3BU8pFiFpVcGgtm0QxERbubbOvXAVMg2VML8CRnlkFo9FPKtbvU0Ks\n",
              "NBYLYbNw+405WIw0s/QAu8g6I8pCrA5b9aBtmx9xEOVxLn2YxntNKec/7tSyJsYjHaPen34erNsY\n",
              "xaFnw009XFXdU1/x/vqlRCfQ1z+c04K87Yc3byl36o3u0UT0uKnJHe+1JnVvwhlwhtzvzus982wf\n",
              "HHidfFML+jzYej/BAXE6a4Y5RptPQL/HzEbEh3s392dxPru2+QLVvtyM85rgEaWZ5TO7RfZdPyfD\n",
              "aItzp702EXDwmARE85b0mGpQMMHGcchcg0PM0be3zDN91SebHBo1ogC4f6NmLE43nZVQX+Y8skGl\n",
              "2lTkRb/AiR0Za2qK/m+sYFKmqsCBBN3V75xWWzJQ9d6CLO+JixGULohq0EZXNwx/9+vQ24mrad/k\n",
              "YzZ6eCfrCY2qrEHlfLtj+/Z++JN++UdKfu9iiov3zHqV3I0Inu5tsYziXHBiZS8LL/+HpDFmjKH2\n",
              "j+dLFGznhASsOm9Dh9F3EgVikeP6nah2reD0OpoeTpzRVjdrcl1VOWFqlnZLvoGJD/AxYqmc1Af+\n",
              "L9L3SYvnIRf4bS2ROuUomFE88BkA6TxcijPhf/7o/wjyf80nFsc/da0Gd7s++rr6TkwIWmQuFmTS\n",
              "cL/hbNumcjQlt0ZPXMWuYHrvKI0ysarD7JfJLABRjBEfNO+IM962/Bc/IAMDe+ndxaEzqeGM6E6q\n",
              "IkgGKufTzdyrSAUR+TXuF6b7/O+VFHHwK/HPkP3DnQ5T0YlStTlS3sUhL194T8c7nbhyM1vCLZjc\n",
              "q9jRI6ByMftVvvPKsV+rHsrMSkKKvXyH3RiSVOStMe9Bg0Y/qTwsL2AMqu/61jcx7m/h+kz/Ovxu\n",
              "ep2E9yHjGs6B93mODVr58zcBkla7lq+CfixYrIhXGvF0mRVPjznSSLZG3uQY7X3N74rU6gEkGrlW\n",
              "K2jL4ZlHs+qJ/UdTOBTfYQNKweOZ9HPqdmrFwjDSHOfhL1Ast7cHtPk/Tortej7QjwhOiTtbdEVv\n",
              "3vObUKM8oEkqYO1+eKwpe0N/gx0ALvi+QsbxQV/1xTL2WgRTdHYOEnvr4WtKzZ1k2c7hjaACd70e\n",
              "CIoRXuRWmvAGq9/PA1d7x/s932h6H6Cn/wgAE2SfRqrBnDuIuk18xIznvHyADbMoXhZPChIPm0ge\n",
              "KToMsJ49jMsAlLlI6cbnza9ebH0KrYLQvAe0vQrXeS7V21wAbJStGHkkVZ7QENt5AkuEmM4mICe3\n",
              "/Bsfow6wWbsZb/U0AXhwNp2QAhQ0HzJPAlZcjMn0CSyUypeY/LaTaiMRN+Mu32Gry4No8jwgZmxb\n",
              "R1zSFhxcH00Spo0V4Tb+p1Kbrnt2KWLocva7F2cqRMum63fiPImyL7s9oPfjStgrh6KhczbodFe5\n",
              "KF2fk9VG0Pb7OD/1MsAO8xLJhz4o8w4Q1U51D6eV+TfEjvFFZMvlpsnSQwLQd9+sbgNaO5stjoZE\n",
              "CD2UPu7twZK84d8266yGvYa1CtmFp1jjoU74pdPBL0nCFTn15DRI5Da2pC1TPjSWYcFS+0D0lYUy\n",
              "y1YTmPcPf/ivhGAs4K2ZF6DkDnT/6/T4N/uQkqA3bjA1C3bEhST4tL6Z4pQZootlZ2njwRSC/xit\n",
              "wvMfLxxkEiFMydD3+3Y41EMmqB8zrYVBvwqph3zOp8xb66j9xNPSz6I6h6uWumPsCWWjFbBzfy+E\n",
              "Iv8NRHU7kLZb2E9z/xurVRzpzrrmaW45kWZSMHD/q6NdbsD0GsZLuM3pel5SK+UF0cwAmanFyncj\n",
              "l2JdQfBYjL0TafpMUWWbEWAd3Uwb9nDAi7AKGL8EjzF24BKQiBeQFMVpFwJqn5mlQvmIbq+2swsl\n",
              "o7Vg5EVHGlAobfGrR4l4KOx6oCIuYD0y0Ml0RznHIo0jtesvrzF7ADDJsdHDag6sFcnCWBANy2Xw\n",
              "7mghjTQ55jJ8z5kEGC+v7deBQTQ167TPSLHvlSs8q5wcmf522wtb6BtjIzTBKTVq7SoG3sEc1eU0\n",
              "y+MZsvK4Rm9uFIcqIoKZCdqd3TA/fH3BAOo2mB0jqvGDEa0/3mbL+LhZRi8nIRCuEZjuML6W50tB\n",
              "0NQr5kFaINXT8GqDfRAhdX00cZ7TQ+7hWd+GRH/+9lzitWoG/rDyZaH5cYGBEC2/Xm44VfjZnVc3\n",
              "f0x5zHClh5QD8K0hs/vQPtVngEum6P2tEfQX9v/p2eoglkK5pS7GYaMD0ye0KoI1fJB/mV13wA7P\n",
              "2kax+8rSpN2u6qI+ckNOxp/+zFi2mdHjojNPtlPQGiT7Vt/TyKUIhj30MKHjkebVfqJiEHr13rlv\n",
              "gkDxUQzW47N/OE7mqC7T64slLB1xarbN7HuXESM8RHXS+5xuauY2ZLX9mfSIktvw+5MmjDpn0TfN\n",
              "btoDOYBU7sZsBqcimtydwUsf6yqLzj+OutFmZPFw2uwZBvpg5ZG2fAuqoJpEE7P7LqDg0q+Syu7h\n",
              "pZXUqUDsIhuuGAAA1e4d4PXEiE7LHVt0eHE76aZI6oqnwvlU+g2sn/glu5kF6I6Me7ZZmXP61y6d\n",
              "76ccWE//vNERp4hTQ0rGxzmuCKoXDTqanvv2fWnooPL6wBONWQnVogAlhGZHRkckFcKUhHmZkdm/\n",
              "5F7QTDBc+asZCx171hm8UZGKDTmQVTA2ufDe+t4oeILllkfND3ivy1cHbqRRcQYF5RxtsedAHzOC\n",
              "Tna9P5LLsGIDhcRv+Hh3Es0Sy0cGEkQ6+ElCF/3h/u5llwUqLTb4N0feq1v0wR4CB04NrnZCQHGx\n",
              "lXSiKslaAcoPoJn7taZmYuTBJPYJ5K07ZSKHzF/7njACj54REL9MGMh/D3s1FSJfiNYoS/oQCHuo\n",
              "q/+G4kw5Ng9tQnISYRKYWeF1F2qf4cjLYP7uX00bE/LUnYsmiskrAX3IUc8wHmC7qc1ISZsi+s9Y\n",
              "E40zn2dIXkO/zKxqlSFZXptGZmhi0mIvA2A9AJHXPwnM+8T8MpFLDjWUSHa06VhJfaf60JSiA43K\n",
              "GEyajJtP2znyhXehkMqKXaTZgQAACHMBnqV0Qr8B3z7lkw/N8YH7VqVDQlQAHP2jsT9KwBwmGJ7T\n",
              "gfPvJDJJU/CxiajjJTuzXkmhU/HtCflf840CpqLh215c+X0aoP2LgTBtas3QpoofteqhYUABG9R8\n",
              "au8837UdStqUITxbeDJ0rQ4EKMxf3TFz/MacgRPZSxtLelw1Eryc71BwiGDXUI7FWRjujeDaCzPn\n",
              "xDSIaWMlnv6LcYg0Bdwu0MQjDxVtRdbCIcKkMvetukH6tKhOrbzWlD8UHJEmluDKVUpi7YEclpFg\n",
              "gPUAT8Fy3F03OPuD5teQDL+9cZuRLhfZ2w9/+qWA1IVojpp/V2R4ii6xMfCGHiIkTH34YH4fexLk\n",
              "YkzfD2hrzNM2ANzut0nr+h/RQ87sFfdNcxr6647/A/bYhNyrKNP/w1gyXVJ+kobPOEiLmHL2wYk9\n",
              "EaAsyVrbn9wc2Rx1wmgDM85juiOwZZ0ImXoh9gor9WLa+lBg5JqetGK3zy0hHqiBK+onNa3RvOWJ\n",
              "H3+Ohv9hUxwFg9wkkVpMfiAG1l6whOnSmVCnmrJ9Kmom3c51YhI304v7X0Qn7ddiAmBhlDJQIc/z\n",
              "aDvlCBFbF4BV5pE1U7ffXWsFlIh+6ShGpxe1gUri7cWpC0aUwErZp44218hZ65bdNJ7sSo4+YWMO\n",
              "1wsK34axpBjW9N2B/a96CypawC3EwLUqdE+E8N/YapsR1S2ludAqFucpt9c4lq11CCRcWtZG9Dw+\n",
              "fvpdR0n6h+/rEd1/KnSXRa+QgQGzIqHWujuXaUsmwIgDVg5Yy/C8xhf4foLaLELYoYNoH7fieMRQ\n",
              "S39F13oaKVGROqdLHMXc1VKMOOSYd4b+Vvp0R3eSBApmmNnS/GLcSmD0pWAljfDkFdXVt++WFkYm\n",
              "O2rNcY55WyUFBD9TY0Wpon+0FrXvPU7ig0UNP3mXWtFIc4ke3Lgw5NGvDlgUwFApqSJHmDxdV34u\n",
              "2B0UlgkeBb/+uv6m9RUhYbJYDFb2MrT0d2gkSnfpE4jUBPloANG0GprtBxrceDpedlP6dN4eCnjy\n",
              "gKFunY082bvFHVqe8PpSXABg/tk/7J/p4ZQFJhUkUn+ghEHiCC6eUTRQYKtMTae4Yz0d6j1n1ISo\n",
              "faj+SwWXpE3ZvhfBtGDmkc+ZFlR7NHViMG+GiHh4MaZm39pvxea+92DywRuwisG8V1l1cg7WAnLX\n",
              "StHpCO365rjkRqKth9/OSpSFdD1Dt4mywPfk6HjduHD/X8IKhFqEQoIW17Bw4u+p1sIGkqoFUa6w\n",
              "/A8uO8dZFR9O8K++yE4nSy9ZcHBwb8HFMVHWsKx4NN68oKVrD/2ybS3Xhyfj5yrU0HKQk4TqzXdX\n",
              "5gFD3A6PsSnD5fys37ArmffehGhrpx+rNgjXzDrYLQiPPXWzg3WtQx8a1/+aWpRoCGMSmeXXIJNs\n",
              "tHPCpCcIBTA77SYb+vEqogi+YwSxtTonuGla67fdSd/koKsN1slXnHl0VyKoG6yzapmEMxJ7drMi\n",
              "uMTJ37AN34Sb+ySboRKRl5J4uT2VRwVGlTf3GmIDX76Mu16IQt1pDXEcHh9lsDPIZAp26PL5GOF2\n",
              "q2zk3hH8H2U2maYMUWBVIsmm0ohQfXP7ADVXA9nZI8r/2Sb24W4n6S8+wLej17OdVIB8tvdBJ1MV\n",
              "akEDneZQ/Da4n5LfenQbYVjHt3sZQ35lYwMgtO+IGKKjzfNa2jfx88slGEb+31Sf2PxMUl63wHSl\n",
              "TzyDdPPuAsAWQgXU+IzKbrGFv89k+rNpRNnpdr4thSvXEMt8swWaZZWCKh0eoPYV8eref9D9E3Nl\n",
              "HjH/hdm101AvMkAy2QtLlEL2+NU6ZslN3NBE5KcJYF633CXh6lsiQTLbh8jVlTJzF2Qbl+zvBRji\n",
              "Qq101Zhdf88sU2DhIHwAAeDuDnBySWWQ6t2f+u317pXTXA72E2V3ckWq7o38GtDu6sr3FR5D0Tu6\n",
              "zGLLeSgsIx0C9cMGclsymi7nSqlXcHQsUE6FHkKDHJzjbQqJq2rece1gyO/KOrEseH3KfoBy9+UC\n",
              "XkgZjM40nAgXTv8+rEYu3aXgwaW8DSX+2gkTf4JXXEpXHqldsPGVOaZti+sRF1loB5JNDwGP9dQr\n",
              "l2Amerh2cSrJK66koqCSv1HzUoI5F76m2ZZ8bPg4R9M72v0BuLh2d/k5pJBOT9tGwd24I9Rs4hgr\n",
              "pdAvCHroGdbe9bfrPQOBPD7XNj1jzaPHSaWCiyEbKeF5RqkUmraqtxIeg2W0Z9AtTtwBGwAYPAJ1\n",
              "SaOTVjp0ZhQUf7HG/nMd37UkQnZylkYJnlzd9rEyeIUuV6b3hUOHsWjFAbmEDmrMCv9G9+wuW/XG\n",
              "3bqeOiD+PCTE6rjxOvDmXBRuoKCYWCMmhsJNMw4aAzKTcD9H1jOyELYWbIdCSqJ3z4wz0k9pWf50\n",
              "ar6F67+G0f5ED6WC5p5jTU2kVYUI6qG4y9DqzaqJayxgLWWMEPMJdeFs7ZmZbw/im8ebn/mv3Td+\n",
              "yBi3bP3YO9Sy2SqjbBN8nOyGayMK3fcgk2MPvO0BAXNpxMBisbx9VXqkkVUDtNpy1iHrQIw1XvEy\n",
              "9TnlXiHhoNvkJUoFcT39BZXORmP2L/fnNmLMSehhefytecXZWz34bbhxe1IYun/uk98egk0WMY2f\n",
              "MoglhS0h4eUERL5Jizx+ud2vRC9M7Cx7jryaGwMZcxd8vp/41cdWjX7t73P25PXz5rtVsYldsrES\n",
              "oBQCsCjU0CT7eKHIcr6+QIbUyokeCPcmDNWBMgm1gWk+xZFd+19Our0RO3UhJi5ieSXz7/xdqf0s\n",
              "f8Tx2YCJD+zhR08m1nOde7ywy2aSd2EbugaoyvJTe9rKeUvqxYUqISycVV1GNY6rTz5epXuG+BNL\n",
              "F1Cewf+fJ3fx/j/KL+aHFeclRrcAAAmPAZ6nakK/Ad6tBfBeSezzbWIOi8TmNJ27962OUACG9Cp+\n",
              "QlHwCnRr+bxljTckRlm5EbXwfyJkoIfmuhPQpaSqqprufb9WCNKpQJiTmcuwy6unxPyUpzBQ+tco\n",
              "pdFEOmewdAO1RMvfCR91KQfQ+rHlwnNWjH9PfE/3FLmWG0f6uisnk20DuS4M3oELhrGTI+3/a5So\n",
              "XsLQ5P2XegVPP7Ayrr+p/9P1R3ejnLEoYsCft9NwFZH7m6daldktPnrQEGLfFZ2hiJNV9SvpUQyW\n",
              "lDHChaPe0E/mSdhYkdquBqukQr9h2XChDCap5ZIf2ziZULKIfWGIQP+Y23guAPTml6DRFbjVIYt/\n",
              "1XFMY+j4lB38WSX308yl2Jkbu6XLukPLaMoknbgG6LFL8QAtDBraLJ2DnH8Qv5q3/u9ladQoaPxk\n",
              "hPwVBzCYxr6AY4VSociqJu5iHpFoCLTQaP47qYrr/0mjdhj6l0pSn2NzmexwVUzbHv7azpj4hgo/\n",
              "1rLOxWatKNt7XqToB5V5yhZP6YZ4z8Y6lWtnf/8biTxZ2YdKsulelBuoYw3gABtjO0/mIjESnh2v\n",
              "UasFwX8njuAztP8dR10aqasoj1bR7k42BxjPF0l7DExGuUF5bjuykqUXiSYzZ10+1UfPExCJzSOd\n",
              "wQ3KZgEw+61xRTXYS+2OKEMDFSNjT2rbMFZ6DLPl3S5KLDCkTX50ii3ZMS7GMvIkHqWSG5uVSdad\n",
              "y9y4U98PXhCe5JtHEQ8x3LYryOsuFCszSqF9XONq+ajdpVYVXcgWUcc6QXqHN1xiuWjbtDrIyLvW\n",
              "hTqM9KLNf9KZKaHRKIudu7j5gt5N95OLNR2KHftEYICOvd9kVCsg0bI2PlR1+lVkspkKm1V5/t6I\n",
              "PD5/qtzTJOinU6xEasM5Sgic5MYSkWLknqHhgRt1F3+YJksGHJhbZpEgRHZH2cfp+CHnn/rpKAXr\n",
              "jMV8nEfUKYbagNKohtLt4I6oJAS/P9bBAQcRAJgLES+IEsbgamyCQILSqHQrqmWZEILefeBFiuv+\n",
              "ZOk9gwX+oV5jZLVgpbWbE4DxHbLbswQHp6BZZFdBqd4ssWZw9To6A/sucVthk71yN8LWb+RjC71y\n",
              "0dTl9CN6CY7ovT604LOiaW5dfSmUThPEjRn/fd/mR44FbwNg1AQ+pZWQt60JJlzyDrWaR+PZ0+s5\n",
              "ULXeTmlTJgezJvs2L4/jF+0QwlbTB0423CuYiS9Cksn1daUohtgjvDrwDIYiT8f/7sdqu57lWIwM\n",
              "+gXqssuc5Bo6swfoVFe0R7Godl5R3MJSoJGDXMLa/HYo25QOhUYxDcRBqf/Aw7FzJ+m3veYEnWMe\n",
              "BpOpKIOZdpVEOJZotJKfZ4tD/cBxx9+cCC1EmSdlrT9kj0zEvJP08Ev1KgrQowu+hxlDUOIjjzoo\n",
              "4nqgmjTIrnA72z/Phbrt0Na+TK4z+skTFcBh9vyc/O9Na0h1YKC2C0M7bJ97JGnoNurBjekQTFQo\n",
              "IiIyok2fv0Uw+/PEpuQQO73hfTKuKI0uhux0vDrEQl8RMIlA4/RvZQfuXGPUBNMuUP7lJoGRTOcT\n",
              "DbelzlNOD9t8XnQnN8bS4WC5i82M5OqRqcJZCVdfEn9U7qYDH98lmN8nLIi5btb1ubpFf7mTCLzG\n",
              "97VivmN1Cv4eX64metoPmUvKL1Svq2pFukCmpYiR6ZdYoc/KZXAhs7FAsco2B01FqaZ4FxvkW0Lv\n",
              "CyimkqfW+Fa3NjUKR2tXmC8xIJYDHGDrlwu8Xft+TL9px4eiCFTAzKM8TU6HfkcdpyqCaf9ib5W7\n",
              "XObGxJ/9y6PYzKBKCHN0RPBME46iTJjoZJVztGjmX0T5oaB/DsyKYOf8NsB2+43lvT/bjI0tGLHx\n",
              "TnApa4zYm9E6TFLA6G9obAEYkfwz0LF9WSVrsxp4iaVWQ8OmXyJBFa0XCSvtmHJZo966yEahY2kP\n",
              "6vdNgDscssOrO+F1SLNwwKdEZ9G6izixo6bt9DUaooMOeqvfPTUofcYA84s7/IwUYTlFsgNqdqlN\n",
              "ng5eMMF76Ou4YgGc4wWCdTApqkpoYItRQBmljdJV5v6MD5upoe5HvYk5shqQQJx6WwjzRGIICTVv\n",
              "hpRbyPMXmP8jnLmG3ztF4N+Skj1+d6ZOLMWHfnnIJzRS4pOUkBUj9+vywdTB6ctnJIT5DjNHFzig\n",
              "ys0TD+iyICuPU+2MdcabafT20dxmJTa/olBF6WnYYkUrKzHv6VftwSPxGHZOu6q6dSTkeZm0XPXn\n",
              "gnX6kA3vuq3478/jTdrqmzbo4mDan3L+dFYWz/oz2SDOE+7j36yMqooG+1/ecKrSI37gpfjLJnMW\n",
              "McXSYw3/LUwH2ye0qt32AWibqT1R1cxqyT1tBRgQAO0V8J6vOB1DfqQ/5niTNzFjEOczI1xGGZmc\n",
              "1lQi5S41O2s/xj5jJ36AnPTBdWEx+ItJIAV40ybFNSfANlKdDzn0i/McVDLMeX+kqdKQskYZGPLh\n",
              "BGqNO9O4LXx3TxB7kJ1uSJ6uCuG/P/B6ETQItHut2UEMd3GzYWIMU99Cq3BDYF1rOmJmQMwdbjVA\n",
              "nMchqanns/I49IB+3kxoNFFHlELM7u/fi+Ly2jVZo3ygb7yaAMvnH1e7iq9a3gQIo2y0FKE330Th\n",
              "DwBYYU3iHbQ6uLrmEY3dkbYW1wvBxinlRQPVq0Nmr1aowqxNfq6JvohjLZT0KSEUy4snofQzkwJ8\n",
              "IMZE0yCjG4GtE1vrl/DqPDIlCThf8qnWks/INfWxNjBrs/Ka4V0obnvIOUq9wffTJHmnnfkszTML\n",
              "VQDN6xKFKXKqxPuBIAQ1h01+AtKH8XFxBOT7uwzILI+q7jtBk1AGdLVhzjG55tCyExTYJEAucHam\n",
              "SMnVfvLmBAB3k2NcKVT2qpFsxt8DrfmXxrBxC9xQEgP0RN4G7m2y7zSR4GyPZv3RPuZOPBjmDGkT\n",
              "o6XXzTiGiYfJCiB/62jX3HflSxU5kpvMAy1/rNaaJoO4P57MYQkQ8ZFqCga5ar915B1wpRFHsQZz\n",
              "ZgwuCNamupvOEUQ81tj5jqXWwHb6ki2AsfQBtQ7cBv2lTtVIntH9yk1zBKAaWaEBZCC8h+P19rMJ\n",
              "e3hM46tuZJ4TTvc98J969VADESuaYp4vNdzVNt0HDmzouPWyfFRl+jTy5mpnFu2q+roWWdb/BVSa\n",
              "Q738/+vHQZ5YxTrzt1hiJ1niBRW6LfJpABLmn/soTOMdZ9Y6qj17B9Rg5puYszNl+l96nJybProC\n",
              "ogIb36/BAYqEaT5+7M5zJ9mL19UAAArZQZqsSahBbJlMCHf//qmWAze2g1xkc8B8rAAAAwBa4qfn\n",
              "8ZS0+zEs/pzDfa1iSYRLWcGOMNZcuVP37enlz4xJSDH/YWmndB+QMqrXM5vG5Oc4ZpE0BWeE5/UQ\n",
              "j2vOjzLElp/hawp4E/VleGIuNLYke7TeQyP0tDKLNrpWNNMWqlOuN2ExsqpcACGPA+AYjupEoDz3\n",
              "qDqrzHNGBQfT112csEWKiEdwJyK5BvnSmpqQOamURAsOLrWuxvgZINeiSMIdfWuyWPJoMT6C7ebo\n",
              "QoGnpF/mqxwMtPve2syqXZqIB7HaM+rHPCXENhVab1R4nsFtAQSzDzGEaBxFTwe8oT9FlmFLJrD+\n",
              "jsS++rLYJDkl9/fduhXWtuAitpdkm4wWU9IyPlMqWrVu9rcvYWhtdQgft0WaTh5ruHSqPu47eyhq\n",
              "RRTh9t/r2ZQowEONrd1Gj/LSjAf9qSHovck3sy4a4SXzRJCYwcdszjYgWmiBdjMQ+RM+AMLpIjMM\n",
              "LegnpbdLFg3kiBLND+UnvYwh+XTkZRnYotJ5FOfA1aWYhr4JzaXbuNOEWn0nuG6Oc0cpM5sUQMJa\n",
              "6GIdEBifgiMfacy5RblQ5J6CsWME1MKtHv37mJL5XSmG4nnN/jx4ZKchB/FH3YZmQ31sJBziUN9M\n",
              "y1AKxrXGc5fKa1fVXDUWUVamKa5d7+HmXkGlLFFJh9VAINBkO5b9zq6cV5aD5h/Dq71AMqefDYIa\n",
              "/ULdM8KfopIsoa4sVxHLbXUS8XSmWpbrl96ziNSaQMYMdkI0Mr74n3ZQJB3vHF5pNa2l6eFQDKFO\n",
              "GEWlQlOddJevfYiRodFvOzcUQeA0IAaOn3oA0eIyekWXudX1ipCvzA9RGb6EBLIGkPSgaPQfKyHS\n",
              "eafY4EI8JV09TCEYFbyVHjQgCu3l2g6tjZ2pOZTUchsPnRJ2k42riy7MEcWIp2bnBP2MXElAj6YI\n",
              "6OTMFkPMoPke5cAQsnTy5m5mRcVVxyjTFt9o/nl0u9MYEzEv0dxgrL7YlP7nR8YfbWuzpxwsC2oD\n",
              "jW0KIryq+RXU9wobetbmymj+bVyrPaIYhiXQTX63Jq4VXAI//kHvu0EleXkF/iifFCAY7ulYN7v9\n",
              "Auz9aHvvQ8Yp1sDGYtCLMEeBJvaU+Xkmr2/rCWecJ+hBETvf9bB9ia6YEX8W+Ifo9nCv2MzDfsak\n",
              "z1kHMJYCiZb3Hk1SUMg7HJqjop/GHCo9kwUzUu1jr0Kw0HU3LJDQn6D6t8ERK8W65qszQPuQZqf+\n",
              "0Vpoex85Y1Vh7wk9X5ojYLGWYWk2qnFT0dBfcUPAsE42a2YfdsytvjUNtYK0fCeKKCNU+HvnwCQi\n",
              "DCNBrM9NLj/rRL+Ms498tqWtPoJO83c+1xREEw72f2Cf8KG/SoSZTnAIn4E6nPxrBUxpTMNJ8gyW\n",
              "ATBB2HGuL4rg0dNAOJwwZJcpVzz1xBTBN0Wr1lRXcFjnFUJ1BofiXBZli3TtHAoQrtQ3hu/FFh1U\n",
              "2kZkDLBVX2K2JbEfiuVMkR3xQ0ZjZBwbTffnsPh3L1fvPj1BC7qRZROS3hL5qSAvLjJTkF72i7+e\n",
              "NB/PJ/yv/5pvGY1XjacSffAXVWno/ejzFZwJnZSf3nAJVQTsvvYiZBdya0HuTVoZW2iYx+LRWygK\n",
              "148VhP1sEFOVUMY1AjLe3ZdNWXi60ATBUeSUfwlFmUvil+x6hVSFb+Q4VdhXYoVFiuKA827dauUC\n",
              "Tzp/zpIbCi6erk6mqS5vKr1DI0Hvo1JUrPwiXnL4HoG1Qak94cxgNP1ZhfGYEjiku2C0Z+Bo82Eo\n",
              "kNxNkBe8aR4vfV630GyzXdsUUNEv+rD+rh0mPjVsCg7GpE5Z0Qm7w4HW2j1r904BMWk7A/p7raBU\n",
              "JttfXsI5ZCCEQIJIl2ieNRGoiSOpGePP1lTlNjEuE4O5EcBPoNzqOCoFC0IbyIX4Jw/2GkuHdgNj\n",
              "lJ4rUypmu6QP4S4IXBpmJnzxiP4SFVQkANZTBfp1u9iBlCDvSYvOvFBl+sxpo0OW9QF4QV4ft1ce\n",
              "WISOoDlqTBqXZu8ku9u0l70tJnIjKJYeXAHd28GBeS8m77pLVHlwcWDm+aIBr3vgzdeESBSB7/Zd\n",
              "hrx/odpBICe60TiDY8rSC7rAKqdj/NE6YFuVZDFFFe9NxXNXc8kpfhaiRKafAW+pcyqgh10wDg4i\n",
              "Ojhsf3qUPIo7SA/J5T2O0ny5rWsVv6s/3jU+fPrLjQJ/07eKf/o7LqWggV2AAU/T3tiQ5ovCa/iv\n",
              "xEIGXzqZpeM4AzHLNMCo5+Kpek9rp2vcGBIM4bBG8dE99iibp74PNfgXs+reGf2vAIIu/pE40e3A\n",
              "uFBx+s9586gtkPBNWXSlsEK2fLG/p+9H7OWhlr5HgkPYhDirlyTvgCbRrbfy52TawZy1Hm/rLIdv\n",
              "lNJ97Xs6kqAhRB5lUK3Mo5woCB3yxATS/vCHf0BRBO/stL9fG/A3/dkrpehMhpux+R0VPJGTzLDo\n",
              "MfvHjpFp7LPnJnZLYojqBXGwC/CmAzqPl/8jEUopNplBaqycgrUzKa0R4KLuHp/y3hdZT0I8Kb8r\n",
              "znFYca44SqA+mnNFky2GLXIz2R9VKu5nj3owMl0JL0TuHMCTDQpPWna4T67FqnEoI31Q8d6Hm9i7\n",
              "+X1VAwvJMl+wLWIvWBZP/Qg9hPgKp/AsawMXtJfkI4ML3PijMxwlmZ9y8JFeljJ7EO/S3O670E+R\n",
              "tSCOrEYEgwWCsZXTu7OhOf9yUUrHU9ZRLZF+NtI71zXowHaRv41I0SGLk3Hca+DEdJjn6AgkjDF5\n",
              "RKHW9fgwnBQOXlodeMmSIZZJd07t9xry0ZKgfyQq6havpwM3ToAhGyp1dosDImN7fDZcQwYn61YQ\n",
              "z2uGyk8kiIvXQ7ZGBUAs/+BQ79MooKuJKCs2rxE10wNR1Nr8Kgk1SWqcdlNm4fjPduFgtYm5X8BZ\n",
              "gerY1uGP/Xuy4AdnI8jU3VH+JYpjxcZS6bOw/8S8gMF61cSomQeNcx68EtaEyzYm0cCnRj216TAe\n",
              "D9mXFzEOG288dIJ8+mMo+E+RdVKZTXV/PeUoFhSq8eQcusZvWL6g4j4SSatHnz/agiiWNM3y3gT0\n",
              "kHXoyWdPaMZVLwPzixYB4B+6uXIVfCcjoXvjUy7zQCDymGm1qtFq0l0b+b70RmstvEBxbPb1UKJ8\n",
              "NqwF2aFKzvZq8Cj/XGYaQ1fMShodsqXPhBxT+GopY0m4Qv+ZruaCokeG9NF1tP5js6saOkPaeUAe\n",
              "tVATLnsmZS1dPIA5jKnAPk8IlO1+eq1ifYZq2VhW3hQD33Dp1BIwWgm5xSBHCXHOmH7g2vSP4Fco\n",
              "DL2vNnLs3Y+z/9OY8nesiqeR+CzVsZvdf7XV6973dB6F3HWs5oq9VqAAX0Fwdfl3Gpd20UJzg8Hg\n",
              "t7ws1D85IjxIkedccLFeWrpmqupykMezsF/ncD8MqZCZ39rmwQs11FlqWOjpu8Pc82HI1vWyUkYY\n",
              "5Xf7YoRWbE/H+JgGM2HZGG21Dnd6OB7Uh08sBATZ/vpwlMsCpSZ35YuK7SWFamzkPjGRa+llH8rD\n",
              "WpyDUJ0oFZR2zmDj/4mDDQRiqXQZskZMGOK8wfHd0SzNy2pSHWLfnIDJHCa6OiVT2w2L/iOgiN+X\n",
              "/x/FW4j/S+1NJwabnNs68LZqKPu4RjAwapgwKF51V4KgCF99muh5FyOQhdBkmLWPuIXjzGVP0AM4\n",
              "mnrLlEQqfMAAAAlAQZ7KRRUsL/8BxBGCwKSoCG57HQHR/1A5U0t6GUsdXyMJaoPF6HL2o2+5/lpP\n",
              "2KVVbw42dgJSTz/nL2oD2R3Gm7Lq6Mspz4uTzUj1ghFdQFl7x+1wbZa34Ph0KNgmM/qMC6jp/Lpw\n",
              "luv+XMC7nO7irHReiK7BM/TOgi7rJw/VzhnZZzUUlqsgaiapvqgzrRlsQY16UTOHeON6RuSGaqSC\n",
              "Ws2W/w7ODqb37/0Z6k4ue4ttj0lJkhetiyNHr943cZfSaordwd8yhytDGRRp+0kg220imGlYiVU9\n",
              "whHNQBAsW6dVPwIFeq72EYozATKBB/R96XQvcAEXE4xvByxGMjorMXiM88ox+gxIASPZoSeORojl\n",
              "uh9PEllFV+IDrrhwYpbAK+HD7cbrsN/CSkGUeL2WngjwgS/mIT+aHPIOgnI61OKHtWem4YC3DKpL\n",
              "xNIOeYaqfB1HAznvcS2JVu40PlEFnp9OgSLgGQtqeCPHy2SFtuauw507y3MWHHbApezguZJKTF9O\n",
              "MUtoueEfXcolKzJK194bMk/f8mCOC1+R1zsuHu/hZ5YnKVq09XvL60OGAm/qYhP77pytm8Wbr2az\n",
              "I66VAAocn7B5xNaBhJwF6ml0UYy07j04Im7gU7pcr027PGzS5MWPosOgsARzIobcEnbHEN0pnyWO\n",
              "JnfPVckl91rng6wOCVBRAg4OF6JmMKjMOG73jTq24upU4eY19TJGVDhkIMVp2Ftd9jWW1zUw6qqc\n",
              "7A+lqcO7so99Ryv7X1UDK5lKcR+UD7kNJYXqGszy+5uGenFNOAro+MFzcHS+rRTbsAeAomMnatxl\n",
              "l4PrRbLfyEM7F8piqY+xmJtlPZNaUruCmgzZsOCKfUmG6bDaopDXqrxp3Za3a+Ls1HtcZGKc2aNS\n",
              "esMKXbmbdSs7gC4WriNWkjXYcJBn8m4H5jEZubcp176pCZxUPqpHO0mEjIrdBDD+hTEeoNPRRyH1\n",
              "RRtm2ZyIeUbAP4ELLs09OP+jtQ084PIo7DjIu0G48ieR54uC2tYUOV50ZnnQe5++ySceHiGjk6Vh\n",
              "dt1fz+LrparYh87xa2J7y0s//irk9cTNN/HuS5m9O1P4g2FTv+BXQ68A/8tHrA+t54eF1jQJupfd\n",
              "txwRG8M2udzm6xvPYE3I0llXs/gJ6vvWd1IPXay+KWqxy7Vi4XyXGdN5IGdphv1aONjA86K0SZcw\n",
              "PByuFhBsgi8sXrvrcmAbpq29oeNEqdnlrxkxT0eSs7pNnFjxxvpkFpc1ReNQ2Ljt8BdB6komFjQl\n",
              "kkHBvtB8EXQjlTFwkmUiYPDT75H877lOBzFfTDrGy58dlnShicX0Ehs4NZRhXQ5wgWhm+OY76CO2\n",
              "pzjOItrB7Yn+nvoveVgCkZr9yphaXuiDVb/7NXHoH5sHLIaUKh3MY3+VEDRHm7znFiKjZ4/UrVs0\n",
              "CSFZOfE35DvKOb4c1W12YWVLmmq/Gk2JWTZN9pV6AqtlFDcfoFwbSDJEGeRjyBf8XfKaxe4kdb9J\n",
              "ySRXR1oyAnor6bJN1bwnVKjb9sbBW+MRBY2aqNRgAlkTtuUrc2qbdIUmwEMx10DwIzg34qH/DTYt\n",
              "YzrTmJ6gm+Fx4dg3zODbGy4jA7trMS9ob/PCerX0jnRk1m0AlIWTeGhW33SOixVQJ4GJ/hy4GFqi\n",
              "5o/Tbewp6LD5Kc4V3/EssI4yJmaSC9uDUmOdEyml8CaF3VeQXuSavC4aT6ELcWh9l1KSnebAuiKz\n",
              "//wRRa8PCPrZjsAQ+Rrc2ZC19XLKMA5jxlJ/xROJa4uA+O8mERkAeRZbHyGSgiLfbwbzZBQaHBoy\n",
              "UoEPb7p05uFNfzdyRlnee7DNRh8CNel644WtApxPEGh8KQ+XWh+17gsLX/qXJQ0Dz9GfYV0TaTyA\n",
              "/0G3RJw6SWdH/48nEnl/1w+UN2XcGQRlrN2GwJT2lLu0InUvsh+AOj44xjHBBiyeXLf0V5AHHw0X\n",
              "yb2HMsBdbm36l2Cb/KVxCh9QrP21WqbuJs5hgxnJgghGEhaVyR87SXOyrZLsdcepPwdI6phwf3zD\n",
              "1VGqvQZF61dg5DcItSI0Jvp+CEltFUoVlFs3SIiTqnmOqc70aielIz9Q9eXnaffz7VDi6gvGVDGB\n",
              "KDwI2eYbNkIB5wArgCzLLYsZ/YvPGgGa8K07pXKziPLOVIOjB2EO0CwIRZeWu+DWxt4m+JLvuiAe\n",
              "MpqadIwzk0i681QG0nFuDoXaM3oZx3UdCfXf7nLLTxC3BhuHxwT9K8kshEbu3+iqY7U2E+oEoIn1\n",
              "bT+TiUyHV0r5OOTOIeEATujPaVkgS8gjdL+3h+H/Ct9Rurgzu/pAgIDjFZdN+mTMzNcorkysqdyh\n",
              "j2H+gmahrBkZs3Yntjz8jPSBDMYn+D2CbnwaWZgoBCv+nhyoMdrLfpcMVyvIUmVAXFYoWpe/nlMf\n",
              "ON0bcQvbMzdOafi/ZFBmZROQSPdpkc/n2ZfOl7Gk+/QVcjgdVUfJMwB9wjirmgaTPv4iT4l/aaLp\n",
              "ivZiVT8t4Sw2Utr/zEdtDdDhS1S3ThGtL7dEdHfLjSD2z66LBzbEt2x4P24QL7TJ3BGOibBkTTcv\n",
              "L6Sm5wGv5J7DYPLch57yuCO07K/v1fZrqcW93n8unSb8OgjJn4n0LPEETMUdgBaOWjFq3hS/QkGo\n",
              "E47Y1+xeBCb4mlaC4ARJHSiJfOHMjMZM0A9L1od3bAVXkgX3/2xtS9yNeDAvosoEI3YrzJxJWVlz\n",
              "hGjUCu3B5+Fe2cCesBEKHCzLqUgglyp5TEPc9GA5HfHogcz1Ocsv2AXz4gVRR1CRJcbVxqlPdZNm\n",
              "TdhACL7sFwHoVUCNN/t1Cm5nsZ2CHDUASCvezFglMuBC1I2MK9fTJ95lHC0OGqrxX33NGA/aVZ6V\n",
              "IoBInJNN/NRxX8CE7lRH4ANHeRFMo95xdE5Xp8uhMLnW8krerXYavFIrw//fYVR268o06bIz0cD2\n",
              "ot2qMsKxJZu2WJCPJR09lzR5cap3BO5SbHLlkGo7gsFcDdkgd3QDWBxMWoNGKBJ5nr/3ytOLl0M3\n",
              "pvLA6RyPlLzpeSh1uOEm3nuZBPj2wVin/2GIu+iIPRYJFpw++8E0M6xsp14xbXxX/LaDuaozEsJD\n",
              "fytUnUxflipKUrp5r3CJZbLLxHJdjW7kH2VA3b+OsFkiRTB/r67Pc5WH+QAACMQBnul0Qr8B30BB\n",
              "3XUggAn2fQAcqASs76VgDhRCZcSzgtb2YixkfPFT553rhA5tOQv6ILHExUFPsecYYw+AonhLrc2m\n",
              "YDzX1mCXM7znKOlOzkPsJzn768VrPrBPREZOKzJzm9CEQrN+jMohKXeZYL2FD23agPEAkf3H1fp1\n",
              "iofSPg2Lh/zZbMABQ7ds78Fo7ivi1KXvEbX/1tC1Tjk6AfXTxA0bFkF+t4At4TExrSwThcAfM8hl\n",
              "+VJQHmttweERE5f35j7NtONyXGPdBrFv8OBtN/Ctj0ajfpBpJSJDji4hHFLwqiU34u1CsbHfTlB+\n",
              "+NwY+VjQp0AlJrAq0d6kRECe0zDimxjeefJZGPfdzOF/RQBP9yC7LviK9ZEluH6sWuqxVEW/XeOt\n",
              "YDIScU5Afb5J5CvXYcGsVsF6RU9VE7i+r3EaN73+3rf2db3w45HsHj8cUTG1EAiym0gCDb+uNgb+\n",
              "4DV1E8k46myA3h7LMqKtG5uYZM7/CxQJWOq9NK61ZMrYNvA7Jj7ViipGYSnJrmi4JX4tNlR/LCrb\n",
              "r8M6PmeqT8LSBgZf6hhtKk4PWAhFdD531U3E5KTvCCc+Gxi6zHlX88nRWDeUGBwjRTxiNADrmkmd\n",
              "hOYhgT1JG5SkNHVlgoCtQjSW6Q3318dshRKrG/W7CVHNQDtLuTX+hKjgVEjMLpg/E+RXPjhOpotJ\n",
              "wXeRPitdYiMRrtWAl0OJbOAs/hw+s6/D5QySW0oU2jFbJ+sIhThpq75ZWHrKvxSvi6Quy3VtPQ7T\n",
              "ZaQ3yjuBZccuAXn+dqZA8hM4JgYzZtKSSb7GW8bKbCuDhDAO6ykWKPY0Wyfyqf1CTxuRawBnmDkz\n",
              "TOTXRq647XTz7/uOEfHNQ0j1CRgA9+a/M4krnZ2AcflMoVUNQElFniooOAZF0RLCZNHKE76VJQTl\n",
              "F4JV0iVZAcmDhbc8lSkvktVbG2Udhcjfi0OML1xBeKifjqjp6Qs455Dsv7uvQ4nVJZdMPtRcoZFU\n",
              "TtAYATVdMjz56XTZ5iMPzIk2zAknPhYNGL6BFHFCJl2OSQ9sb6zZ/5WLVADQPgHy4qdiRXlE1ck5\n",
              "7P1W2H7F/5tHlw84t+SDRbN+4H3tIJvC/MlDHbPNwyBefnX1uKK1ZMhkV5z6MHpFhCJYjGfL/O+N\n",
              "ackTKjqtSPyL2EtzqwD/lr8/9akheaLjGhzsJo24rMCZBEqADSmKUd9cGywlQ5a3yKj49zXAFwYa\n",
              "pHHI30wNOpmY4olg0GnfRHA/O4yxEOTFYQ2EVTxdzZGZapt8o469G8pN1C+IfMVbh8WVLdP07ZCN\n",
              "15uoBvce/3iwqVKRuvbmKLEMT11+tPyquOH4ctYChGwr8QsRE+SPQUSMSWn3x/MU8Yzei0cUaxEl\n",
              "jdYq08GBBtyWObbuWZOj3XYPOnJ1LCL+VBNoIoTvU1VWwYXrXzNkm99Rs/Wbie0IKcING/YTAcnQ\n",
              "XlJsUa4EP8xAXCOQC408PufqnWpoxtKmjqYcMzAothAvzlsUbN+EN8E5Hf/tqz+GWgIaipg6bMSG\n",
              "v+VbhwLXqpHwYk3jZBregfNWXMicYkLXRxRTPTU42s6bErzDNQvsG9B7GFykTzt/T4//PSGIexfz\n",
              "du1TF+fTDWYUEY4ALrjrQgbd478bEDPWup5EElZZQ1o7jvPWaHv5HtN6kUDMMM1NOdgjR6VNg0GS\n",
              "skv8AddigtqoZFqClsxXj2WEOnv4gee9FUVajIfU69rwxcQeqaYokvc76rUpVguPDTyCA/Ul95FS\n",
              "2DjYUIAxzBQWyavidZ2md/rT7auOEtSAv93r2+zixuGC0g6cqs2GO7QxbgHwD4IrUTFf7e2/bkW9\n",
              "LwBR2sjhKT2stHjuj7NpjS1OEmWIXMtgLzRPVYfMW1CU7lbn7fgg/MU1Vovug5jfodXVaCYKJvOS\n",
              "AtN3loUQMGeKyaEAc2myDA1zTGbPg4F86PicUB1J3/W0psLk5YiiezJD6JX4g7ZleurKKnzctV8A\n",
              "3/g80wIoNVWOT+ahSCCOnbjaH5EWaWwEwAYpigTTSx7OFFjN0h6hUicOpXxxTGml22+SpN1JTp4+\n",
              "Vmr9FPTPICXbeUt3/pOlXfB4bu+w8JhN2RGFhesbeiAHRTC/K/c81vTdf7Xl+m7PDO7/lpMF3txm\n",
              "Ju04peE3RHekS/MM0/jyTXO96Ium4vc1uooip4gCw3K82wMbqboJCgM+G7KMRQ+c+xOijGJl19Jx\n",
              "qblE705q7tb+MHbRhyS/7gDzGrphHcQchnqxirH9LNqVkvBZI9UQIYoXTGJ1gHjQyluliW+8d78Z\n",
              "Oic0nsxNxuj0FXM4DR876hG61d8LSCJdbFRxm3dmXDNSaibHVCX/im0tizZPcngMeAPaM189tkDi\n",
              "5Pb38sTerhCrHZ5iF/XS+2KTsdRC6hxaiygTiw/tY+r+eHtYXUaLbnRDqnyPtDvmEVfZ2qkcnbLH\n",
              "zZsUlavxZi8sXyFev+/6JFacAtEdj+eaw1jQSD+geSPzZx/HOAMABZO/otOLh/FXYyq8G860f0oG\n",
              "IGaSHXBLS2Qjg/xg7YOPmuAEh9q9TRjcACxMGVj48tbhgzQXMwrw9q+yfuCO14nBsFyU5KQCfVfM\n",
              "Ym+/5Vvp/bR90BdaiIIIQOW7CFMLTfGej/5hK+5EDQ0i/a0En/48ST8WkoN/hfl7HnIYoJcWwFjG\n",
              "ske4px8TH8XWR7QAEMZXk98vIQtRLpRqxDw47vP+BADmbMqTWMMmQ/NOTviXheWJLEz5CJ57fdUU\n",
              "s00hw0GZE9oUooBj43PLPUw69vMV3eI8Eye9J/3Wi42QgRMmne7nqGnnHGm9WAzrrBcxA/UQYB7S\n",
              "xvf5gUehQsBs8glqkYByxEzkXcLvyM4TVlI2BoLS4lI72g/I5MS9cS8MESF7BPTQrqPaPAT+bsd5\n",
              "FGOnik7hHC9HYC3UQr6wwWrpoj6wyW1261eHOrmjjknsNglMFimdZigt5FVqi9F5XZ0MtIyn4NJx\n",
              "492lCT6cCJLJVuwAAAopAZ7rakK/Ad6v4UmIAHM/pvAS5LIcdt3HPX9Udyx//hrnB39bE6rb9BG4\n",
              "+pGmKy0SebhBMF/KPyKYRngMisn6ud1bfUyX3b90Fv+CY3W3czk5g7BQ1EODuA7BU6KOJ82K+h/e\n",
              "5CEWOR7AzSoEDBggq4+NxlLsnIed+I6FivHvuNVSUzHhaDBgz7+s5nA2FdFFT9+sdu4x4NWQ4h2q\n",
              "xxHWO1KASldtRSb8lOZJVLjoZELmufnVOpRKHV6dr8ATiaPysSkhALyULj9d0B8E/CbqoMFfGRh+\n",
              "M3w+afmvO6PsYcV32PmWDyfY+Ey8QnX460Q8byPbeyMOVzLurTepgDSg0zP0DAWIn8W1BFPGtWDd\n",
              "HiprA2IIedHlpQf+Ul7Mg1kN08uXFFiJuZnzzEJKGO4+rYsEQ66E5dKn+BpIfgiBVMIcWa/oFALS\n",
              "iqAmA+JMNIlGG5SqVDvkCQ4EOk2d9aBdzSWh1ZQGyI4WdXjtzxeEVLgYIK5bdW6Tt0QN+nEzXhpL\n",
              "0DRTw1UBR18nBjbO200gD4H6Vd30Kv/DoLWRlLVeHYMyOH33U6+YqLWpJJjc4qQZn8ULGvKGTJ0g\n",
              "QoQSEJABEl9OD34MD2LriVAaDwR9vfNed9p3MjSBovur2Yg0r6wMTstdp+SKmcmjSuw5kenAqPz2\n",
              "z+1QF9LD32Nt00hOg7O6RMO+fyK99x/WSkBckWAtdryJMRtVTorANGNcJp6T7WPdj6d/hraqMgUf\n",
              "pg6bryeS7yCN75f3887IKkHhSxqJ48kgg5k02nYZQ65v3jnoZ0T+SThlJ7zvHvoiEgftSAuXFxfS\n",
              "hvlBIerzP4S4ZPgyaw9dxqoZftS1YcXNlUeKiGuvHIVFbWpTkzJ0yx1Q/09PUjFPLumDgHgsYz4B\n",
              "dFFcZF3P55bQ3tgwrk8T+hc2uPKGEq2lL7KUDxXL7LNdDcB/bvx6t+M7gYAi6iRKJ5l6CZipLJgr\n",
              "H/gr/Gm81NzxD48TTSi+pkGvs5//vEa+6iSp/INP/j87nCj6jQeiH4UIGh4iFszj/mecXiL4Vdin\n",
              "o6pmScXi4vL5bY0EOyXG0BZI00ge5QANow5UwYkd9kKee4MQw3m2gY5yiosBVwyLm1DLeK4B0jw8\n",
              "rsCpwFnw/c6KLM/qC19zE7UeCxJ/EgwKYby7mMh/u/LnIlAkO2e9vD0JeBtOb3CrVk7HInGRjksn\n",
              "Qvd3rVxicIHYoMGrHnWSGaCHgqgdWNzfQNlHaOoBY5urqP4vwMEVWifp5zTiGVZByMEnqrWvspZ7\n",
              "KKTKG6XJ4V1SyLoV041ug+0ODIhv7DJGXj/adtQ9s03vXQPaasmJISg/zPqCdX5/zoRer4eaKGTc\n",
              "XO5lpkHM7A1PZIf6jJUPL+hZcJWn2y6xfV1rnvfXAk6+A53YG1GReuWvwk1+N70rPxiZ0YY3Lf8V\n",
              "sCht7bProxGQagtJNJyYLlq7Ck3epDo97cPLtS37LY5vk2phh3dblpLL2azvpAgEjkvUbtATklgI\n",
              "VVQohlbCDeair8f6FUMW+kVE/4Zc1U+1+Ks9RZfGhSVrmVEZlGpsDdUgReGq/UdufKWbxGjqPX8/\n",
              "Km/4PfJbav3hvTtrLYv4dKeCZdNKgDfonJO+VMbgjt8EOuv5uui6tU6e9t3/LyIof7eSAADuCCp8\n",
              "r59xgJhxRutw8FROVggYDpATd0JMszieWRy9wofupzqabUSO8kvV+PcKFKF0CspO1cI2NDdhcNe8\n",
              "cSpkgZv7qTRIzk0RSMANwtKL1sGA14l5fpFkjdzMV0VOMAY+xkJZcV5QlzVCgSg+qTS4mD3HCpMm\n",
              "1yyfJ9V2Bfsr6xwWK1qjMdZDgn4v/EokeSGYi2CkXQ5QwdZJK+xylxl1aCM3R201mrhyfYVN3Ux8\n",
              "SycvzEEPoH93sBJgJTPYhcVm7pbnktwlZzwClTCH3sr5NgPjkM9rbUm1nqC7yjMPS9ELhld3q2l3\n",
              "j2bPFXwQ+1kKP0KKJ5hJigaEA2gDws8D/wkWQfLX6Tl4OMvaUVWd4jy0RWwRpH31YhEdRRYDFn3n\n",
              "f6prMzlIcJdMJkbiGWOv+4lQSSgG4CRVmnGw/dlAXtLEC6B5asGTyZvfvRzPICZZec3XJyTI6GAf\n",
              "F+YvdrvfpySGb9HnJRYa47OdtY8rkQpIJjcf5Wq//NizN9KLeB/xPZ0JrEc5Zzd7tex1towj+aC9\n",
              "lvJPBsqz0JFVFZ/jVW6y//im8xky7RRmTLfMLsoB62Yb1tTxdI44d9EM1+GMIrzvomCfJQV+kRYY\n",
              "RIBMW7m8STFvf18/ZD7uB5DcwktEz3AWs9pEPLVB5EGVtXyipRpvYjytnnghOIfnkPyIK+OEG7G4\n",
              "wHpDCQ7sYAD9eD1FJ77Q/34LACrReyt/CtabNQ3X6U51J/FiUW72Nx4xb9QLs4HWrNwkNiFADAqf\n",
              "kZC5A2Fh7D4gxVGHFRXUlAy7p8IpKKKRl4IoTaBNYlMnncsqj0dM0+Mm4yKEPG916RMw9R/BLAxT\n",
              "mqjAQ8ml3c+xZ40YgyMiymf8cTcHRuigSuJeNQyXTvEHI5N2pc/gAboQPYUD0/5mXccW1DJj26Vo\n",
              "zUR+0cOqdTMVqrPzWVCJr46CoVFwLygFXBWUUM6wlAR76ApMemRtd23TvWZrDEUgqrcfwTLHYQOM\n",
              "/v18XuBH7dYxibV1NfuBsAIaf7c6fbBtfbnWCEHafJ57OHq854+eSGsQCHA6+yfc3Vpzc9CG/9Bd\n",
              "Kj8klgq/eaM0WaceSlj0G4hDFPqZy1P23Bt/bb8n0a9EV44exbILaTjwFlmxHTs2PWhvBZz7nTTw\n",
              "Q5K2cbTu5164CE8VBIyhBgJc3MDp4s4q554CH1gCm75ATmgu1PQi3SB34GHOZ/T5Agf/MjvZKvlZ\n",
              "yK3EgRISr6DDhUiyMvY6jBOQey2J4eksgZeF7qgJhMIkoITsdjd7i5OI9hwc1EpF7rPA6+142mSw\n",
              "QhN15fjmXftlSmuE2FyLr07OMrgBwbCCcNyeqhEVmqLdlA5aWrUAQ4xJEfkxs8JEqnpTydGpBWjY\n",
              "yzXt6O9BxafszNGTRs+f5SaBuH2e9WtuIKQ0jlFuxDzUX/C3T8rQKbR24Mp+8G2NP/QDvlqlfl5h\n",
              "RFbSGAssDNac4HgveSv70ZUoLDk5XB6nntEEXrrbnNs/TJAFG3KP1NglDSbPlDkvqA13Sz5o2ZM+\n",
              "KNWOD119gS8nA2OGfMTKZUqlMiuay8ISwy5l1MYXyk6C2NW+7JaeZrxJEaTANunGx6NoTJdQ9K6Q\n",
              "Pq9YZKtv37TzvPXAl+bgNrxqZ39JoH1nkrfmEQ72eqwfv+ZaDdODJwuzQZUYRNjnI0qIWsdEU2hw\n",
              "LlclgHcXKTHAHLeH34/7RCDCi4rU2XOkRn18GpvF6e4K/Wpp2GuVZtl6EgfE/WgomkwF+6EqXHje\n",
              "pg68c8wDgqkTGaeezWmghyygWDsmE8/tVUZjm5dcLQhOgSpxx+o5A/kOqS+V5YppJeDYAAAKtUGa\n",
              "8EmoQWyZTAhv//6nhAGB9aXQ+CcBTQomRlCbPoy7qViskYX2HrI5JKeFUn7+bJLRzHOrKvidPap5\n",
              "VyR72SwXsgUgT23avid0/gV0kZukt/M+svDa1HzbusjMTPhkzFwU8wt+0IsQMLGf8dGK7NB9N4H5\n",
              "oBrAJZw2PEA+Yo5+O4ykU5DWTrWzDwvQXor55RNAcwKsPjq9kgBmH10NyICCOlwtrb0zpY//8FAC\n",
              "hcAj6o8kDpgIMXWFbHRFsX2prRwoeX79AFLLRZFsiLbXObeLrRCWKt0bRyEWPQe7SAZi3P+nEBSu\n",
              "9l27P4hFmH+xso4hD1JJM8g6DiQsPBhq3uw7yyBLtX5Uy7tGNUEqmRVUxhsgTN1dt6b1QbL6jpHV\n",
              "TcHRC/UhiYllkhat81Ze5p3OFQwMKGwwGvQUWzLl+KAAFulpA18SaIL+msuPBrAh4P0eOLFdKLek\n",
              "Wp75EWvsEn5nB49OGJVe50EjwwxfwwPumHmz6M0KmBw1U38XrXHc+VeUsr+eg1+wO5WVpe0Gr5sF\n",
              "E7mH8s2TyRneEMb9JrQZQzJaPJ2JREdsuJIHuktThD0Ny6cuwxfT5EZ4SLJlwWXZLE2gqfiDhcJg\n",
              "n1fgLLoeD8M7gmTianNXpOtn/e3+1j633CoCkzOoD+PdVK+eP9VNZvShFIYQwVJwLLSqitSL1n00\n",
              "r0zXF0mcUYEt9Y87HtS8Ae4XPGlzWmJp8pUVhSmNGN9WZoeakOavgio9rUQfherHs4GC+opdgysO\n",
              "cShCbeNpkx/Em4jMjOt8niKyMaUNv+E7C2N6XMoaxjqLiBbQo+Se46uiIWN+FPwkWaiP8vGD1+bq\n",
              "GLNS1qnZ5alpr0RMVNIIYwr7DDMu3bB6caw268bFS7J9J0y5roAbqMfECHnd7NoU3O3BzBr7D/r+\n",
              "exdEAqfEG1MSLU2Hqvgkt5QK9caNQkHgXDedzb0wdMzkZdELcNFqn7R6tX0FqO1rdA2sVhGEQNw7\n",
              "EzHnxpVEclnXnBcoIviSyjINGtmQ4Z09tehoja0e7TMaF0GYpKSVdisMzOetTM70vekWsG2uC0Qy\n",
              "qH8Vqv9A6xesaxf9ioPKFVhaXwNm24L/S3tSoUndnRDxOXxlHIYMZ4D/4LzJwhXcKGxpEUR1Vlt1\n",
              "uzfgint3JzZLAOrxASuFH7CPNpbCsUti960Qrdh+xSbB7s+YqNpnq/QFRAhwZKnd0hByGLAxRzUu\n",
              "rhRG3CcS7fHJ0IYd7FV1ZGK4m53WGVf+Mzn5+7yjm9r5G3iGQQF7UM04QXpqrKl4E7kNQf3Yz4YZ\n",
              "nuLffbhIdGR9tzPQx4gXaqgiqjdj/OlesA8iheKkF5hGdyFvZsZqz3lDNFOY9lgtpVX1EwqgIkuZ\n",
              "+nk0e/MejPSZZplm9CCGl0jLNc9b6+odZUzIkYQ/KullcOOrCoy+Et5MfABJasrEjAvBNTOT6Bcy\n",
              "OIRCfAJLIh7VRyx0zTJ9QFFcJexzbEXJ1A0l8StLj2C55fhjGhHZidStedTS4+fsfbwnjNjXNIq4\n",
              "J3ZUyNfY/KMyMDLJPKhAdePcpkrT1WT3O2f9+5QwVZBQLa6rmVokc3qZDCxkZo4cTOiBQifWLLrb\n",
              "kClblSezfkdBn5pQ0bYGIhqNoekzWmN4us/2LiHfIpCzxwMV32Jxn8m/ZF6nP/S1+zCfcR7v5vzn\n",
              "3pXlFPbf4CaqZ8fVlHEL7AsV4349SUUx0/HlNZwj3/FVzxkJvaN3Gl7tTbHO2vxKxixJna650eVc\n",
              "f34+zAa/vOZ9uL+OKwm5gDXpbjj6i1eVipWj3Bzwxv1/E33vkph10xqjpYf7KgkmjORAm/sjMekT\n",
              "uznQg7QciAj5K6CTcPHQxMuCpjVmCP+sbmY+NqnU9j//xsPPGllfngtJlRnclc2L6kaCflTtJfXd\n",
              "EWfBr9G7xhQyIH2f91mpp4cGrV7La/q1ltHN+sphjKzPN7ockbYYzibAi4bdb1mceMWI9DL4UFS8\n",
              "F9RSxHxuF3wyBoMak6qAye8D5NEiC18UEsAq+QmYQ4cEQOjq6YxKTTR+6MECL5nM/Kh/DCDFio6x\n",
              "8vX4mVgLIW+JhFV0Uuu3KDvtbDmng4/4ySoF4gfOsnmJDlFWnFHDa4dC1USooEWyDi6B/kOpB9Ae\n",
              "bul9BG0/v0lwZL5X0A1x1Jy3WBK+Ea9pzkIhKx1Y7M8fq8qgrdy/CgCgQOl91i8YbVOkxf7fLgwk\n",
              "ulzHOV75GaQbGWrpmD35D1/F3CNL1NmmoNWyuoFrviTRj+yk8cTZBoeLj/8omCG+KJdPb7Lze2S3\n",
              "C3wGlpdY5vKrlzVNieyC4gv7JVU9Bth3ptQ18c09mRbPQz/++PybZzxmJkY4EYQp3NMI4ocMxfRJ\n",
              "mFoY4D8gl+AOuYBwqnPtrkTftm3MPlS01fzecgxVNRW6G9+5TP7ftObqN5KoNLAruCWd7j//TtHU\n",
              "LwPd+7+Wtg0QNWyU7UmyaC2RW/L91g9jggQiSMsU9qopF5ASE2oZEZClU3JhRWh0bF1TXAGp7Zsy\n",
              "N2kzBX8j4mpUTDIpFMADmnk9dbn9iSoF4yFYcFBJOjVUQQqERLqrLSFyAfiaYI1iVmo4QEf7cUGy\n",
              "sbo/Dn+N9AUiAA2H+JhPV2bHBXbraFy7zLbbG9lJY1z2O8iTUjfpMGk23VEgamJdldyW9xv8RzJ6\n",
              "KdIKOUvt8e3Azm5AoKEiik7iVmOhv7fPzHzIXMOxcdb6o20c3B51Rwew71cJMvrC4QDfaL8KDjqI\n",
              "z6JFUPgUdcw2m10BiuoKeAA1vSI6XNEU7GNOSP9Y4pTQLn7TSiqsBGULJtBvB/bgeXpIz/RDQDsD\n",
              "KsGvB5p+8zbv574BRe+SKPnbmEuNP/Mr49idHylaYDLdLA+UF+JsZCMaNpMjMVIo8RAWTCEkMSFT\n",
              "tECUBWW3+64bQYv2uV/i0my3O+uLXTgONnqAUR/CJEXWFRRjclUbxkEet/uSlHTgXmusEpwmawhv\n",
              "v0mzEPqByZRXE+GAlPlSJ9kyv//XX8FBKqiyE4AKHWHDM9qbjra3qkNOh5dfjX5PPVTTDMa6B2Re\n",
              "rxjT2bKZvnQFSapvRKQv+oHmS0HjRkeIPqf5bWQMPp8A/f1K50rsjvR3jOLjYB4ZqW+/iR/SB2tw\n",
              "C9GInwuOkXkNzGGYj6fpTpVqoMy8LlMMEqGxFzAJybKnUBJM8eInVzggDgsLLUbcFdS+A6s9LDTU\n",
              "qbBnOXvK02NLGRYe5qecrUWqFvxWHNaIcCSvAXrQIPDMGv5Lroi4C0MYy77okMr+jNZPa4hysgyj\n",
              "PZYTy4o1+5MnNQvzD/6uxhDOp+yEb31PyaaeRqGI8vykJ1wd5YWLd5hAXwsURlUJ7QjbQYH9s9f2\n",
              "xOhBhXx8s3BAZFEk3h5Slt7qH5z9W4mZ1SGQizGwH39r57ixFL6hP4CaMYI8/Un/HK6+TNHbL5hB\n",
              "qNCINfLLbT5Gl4Ev29m5C9FPt+UDXfz7Z7zDZqbBNc7rF3uEqPHFtJh5lp9Kn4eN1l78M/3pytrH\n",
              "jChL+9eSQ91PM8AG2QwDxoIL1JP9kKbrKSWfeaumGNftdyhjm24uvDSZ1ydyFiACS3n/2qkTYzpu\n",
              "zkUseOe97JDAQLgD0ZbWLyj7QEnEjGxb2NUV3Tu9i1lXDL1CVMLnWs56PEvZg0G6QpbBBsuUqXfO\n",
              "fzhpAAAJE0GfDkUVLC//AcQRryXUAk1uAhflwL3UW8jMFe8OcQBi6d4UFHJ5c8JtmymTZbLtUo1H\n",
              "p8OLmLh1UybzoVZM1mUCeV1mjtb4n3q36B6TGnRUzmhoYpLE/sMTaAs9MVvB6jolVu05v0jC8X8D\n",
              "tEMrlKDmhT3kQVSmEE+3zo01N/Z1X+W58YFved/2ViGqPIU3DimJXSzeX+1cSJIRu7dJ2FxqNJOx\n",
              "Sq2AqWjHlOc1K+1YbFX1P24uDruRGB0e0XUSueJjMVqmKenTmoHJI9pyPJopugp2hh/y0n6/bfxV\n",
              "iyTSM6y9SgX0QmCsUsjrqS29lT6g87Pcwk2TA3U0BH9YTXWuoOol7T0WWypymriod2kdZieDnXwU\n",
              "QN9i53fn+8jH6ZpscerUqYv0Emk2/gD/GJseLGwJ+EFBrslOm6lYEiW+AhP9DSnEuJfJO7+8GP4O\n",
              "Vy2U08e0zLAFOoMzNAwLvtZeNcq8OQJ3wEhozdRCOf6LLk+IeuxfHQrWUz77ZYKuw4Z5Zt3eksQv\n",
              "i146KIeyw3/oAGB6I2JR7V+nQHw/JPO9iB/t+ZqzFxF3LqzOGwmBiuVtEdNvlbYs1rxnNOwgSBbv\n",
              "bwDDYE6u4hmH+DuMR0BdyHKwk/2/DplEN7pyBt7SMRCAKUh3FYlCdsutVlQc8JBuTQrdF+sjqdN4\n",
              "bkINqZIrxQqIK5A4t6tWTZzV1Okj/doMfMLijlIPZ2FvTeuOLNaf1l/iqW0+HizcYdMXh2pkhpVe\n",
              "mbYVwUANfQRvpvx7PAtr3IcaUKqUQtFSNHvWKOnQMPMCJh4346SekztHT1EU602cve0iEJ6vWpw4\n",
              "+W96Dx4FwAcYUypemNgqtYbQ74vtR4zw2xOxrs2Cvz/nUS4s/MMn3AYE8qTRXX/TrXf4CdooYbzo\n",
              "HKkMbaUOfdOdWq0JihSXeq0UcNj1ZOi/K6/T9j8jFnjJRACnOm93z2/ZTh2LPUhlBfPVtI7Emcd+\n",
              "TrWpEzcCO+8Kuby6xNDW+mPmmbziUvC+D+VZtH2r8w/AF6tNv6mr03wQctS7Z9uvzfwAJWcK5ZeF\n",
              "evkzBKAid/AQRQ0g3lyzdKU4QQAOLLJ/s3YU5VEfMT6xgqzSEwj3rTAgEC9+Xxizyhfj0wLuFgHn\n",
              "xQDoGVFRK7r/wE9FFkdZvL1q83aDRO98MgF77zGnSig74TOJdIrU+qrN4y8IpQVuXwBPQ1oGGhHX\n",
              "kGEWW0RZP54RRSgYdG+Sin/48o/xACUve0h1/32Qbke5cnU1k1T2Lxim95OWhS0soMAn6XJaZk0Z\n",
              "ojJ6tIBAfxLSPESz4JjLfJyNSYyPjNTTQQPxOxc0tDvGRTEd0R1/JrrijuUdjXJELEYVol23zBBT\n",
              "OKGcO9UZ2BqJqCNFSfQzzpsBsj+z30oJP1ne6pFcbfmbWPjka9LLUi+uCZ+bWtiHVsI/sOIQHo8K\n",
              "UjpKWOsIc0A9iS9PXlPSTFbm1NYp50m1RZvbPoobPnrjY2NvCbotLUDX7220u0L893BAzleZTMtb\n",
              "FCe7smveninaifquU7IE2dnCG/5kKyPtIef+xCnM75X5jMgZkFHs+Hgru8Fly3Br76sFM2A8TSe2\n",
              "TNhMzdEU7cPlm3XivyQGmO3D/GCRWR63wHPjMtAhugrpkBGdq2gArv+0a8TGHow9VvWz5Kh3Vdct\n",
              "GdfwYKJRlFcpL29Ips6PjULQabTXu+PJOZU+rTwsEas17+wfgtsRXxXO0aLT/3Dhs8giHAEwXY6a\n",
              "Z7ovWl9N6uz8SuTf+MPBw3fhmsxa5If17HArmTFUnPQEITyb/9iwmeQcdDTw2k2yRrE7qjUZHXqr\n",
              "jgpVgtpwDh9h7FzqthUKIdDUSzSCv9gd/mhvL7CUEiBOCsXrpxPgpPd6VAxZaD4xTXF2i00j1APf\n",
              "C2s10CKSu9rpKKI1U9in86NfzEOEYFIHGi6TzWM8PJSUExQFfr0l6gGc6eoq4ZTS4Tg370qgAAgb\n",
              "247Ortj8s09QGl5+SP4JO2iIpaMh9penM2Ho/IyMD90mAO+aaKPimf1RlY4+DRu5Tpjzlb5Lq0nO\n",
              "1IdH+8Yff/Mjlq5fmZQakCSfaBxN+CMqg+XR13fyuRwj76iQsdtsjjTTyS3qPlWPLZjZ/YgHZdgw\n",
              "IrOfK/RlBf6FCrjzz72eubbuIH7a/9lqb8TZykmRZFDJqtpHU1x2/p8V7xZf8dpPHO9smII8tvF1\n",
              "/ZLSU+dQToDedvvJ8rM/amvQcsN7CYhgmNt9Kp8Rye8lDhUyLSMD7fZVC3BjYVHaqSSY0zf2f0bs\n",
              "xD7pvqSg0vUjPS8PnZRZEkk3hT16SXlim/RUXJ5AgOdyZecNKeKDjalS2cmVfkyxF1sX2hG81+SK\n",
              "vueob3gfm6t4OAGLGqVe4NMknr2Uw+fh5qyNU9ijhQcOBjMa5yLagMEmD/Uei6S3b3iAsSrBJG+3\n",
              "O+ExoTHkpD0Exfda4UYvrJX625ioScRWaRmoLXlRFpnwGdVtN0UhGYq5amb8EOiS+mN31hCvwgr5\n",
              "2Ilx5+efpIR5uten6Shmf5unjLIgjqMfLhFf29TVr7tKucZOBUu5rCSuWb6iTZQi/5OaEPdCVLYC\n",
              "29UiQKRs2bX6H6Nz1SrsIShnn3tJJMBngla0upRqnrkcaKGwFzTdxj3cKk7pEQw8ux0UDa7LmkTM\n",
              "Zk9Bn5I+g4hsDHFOx2ZdSveqaFDov71BBiNZJoGsYEhXw1E/hjLoaxxi1aIoQd1wxgKidnNYFANc\n",
              "N39y2hmvCg+lGXJGImV9NLd3JmWbMBQf+LtwTR5q5ZEin4eFZmkYdRTFnOQc5lTzibo36JGw9bWj\n",
              "Jz7WtKtD+kQwhJEN8T/25IQ3V23GJxdb7tQwndSdfFP3WVJWa2ep9W++2pzTDI2IGsQwB/O71Tr1\n",
              "XAPkbXLnk3ajpn48yRW+9PoIeh4g85qgO6jCzoMN7HDbUGsTWK2uABufjLx39/EB4MaAw2Fd1wYw\n",
              "NjTgnineYInyA9cVsT+2vkHpBsOs6vYKXHYCFeH4gR/2T6YQfIMALQfEDHldv7kTcn01kZzolUZS\n",
              "k4PtETVgL6RlFVwrbYk58aa4BZYEkf0mL2P1PMxPNP12oPYwueVWUC0xsc69QFxjJZUAAAkKAZ8t\n",
              "dEK/AP7wISZhStlMtKEVnlxGsYAQ+GUUwI20OvHNQ/NZKG2aN7mW41416qkUXS2EnZUut50APnDR\n",
              "562gHO00mf/43O1zT0AdLnqoHLxJhzREut+gekzOqqz+5GRVs0w+HuWJKj6W8E0iNceGu86U70LK\n",
              "k3SJN6qrUaGNzxDNQ5uYSvoPcyfM9w1eYqBvgGz0jVdDzcV3jrCX74NVZBuguoTOdZ5BkT6ArMwD\n",
              "r5kv2bMCImkQ2C+6SVJ5MBQyGDaIu8laXvuBxMmEeXML2ptLyzXHR3S7N/ug8XL2IDf60sIVGVhO\n",
              "nNSPHLZEIYEmbncgibKhdOH5LbHi6LCN9ejry5+QpAJbC76iZYYR8SQV88TaK35xIrTYzndQBCAs\n",
              "EqXceCceKTyX8ImCJu3ZYD9UaZFWnjFtee+6UTudaOTb75iRDtMo0v4j7Aq4r6ZI81kBeR+Wz1XV\n",
              "kLnlz0VBBIkyrAXmoLhs+/gbT01VVwTK62yDGrvIApRd6vWPNweB9smGuYQbMD8GDevzZDVbJ41e\n",
              "oyze3A9Gz18ScrH2PxY0L0o/Z7whtxaKs9oq0AcetCXVcXMWdPAZcVaVlPlEqR1EhAEwhQhT4Avo\n",
              "KXRLgnoUJjEzw8ylfxBUui6zaMk2iUZfxd8XuifmlU/x6HkQOJ/oJkUbMpMS1N30r0zzRWD0RVwy\n",
              "uy66T4qxMLqd7GHwFVQcn5W4N+35IJSD37CaEVSZpNhu3LlVq5K7Z4AqHFGqB8gz4JYn0nw/6buR\n",
              "vCQwFPDzq4yi36fMEs5oF4sO3ywEbKobwcThF8ThUmmLR09rxaEYFwZPT4qnUSvyV/lcc6uiTqif\n",
              "43iq6RTRvEOK1wVN+GOjAI4u4Oz9o/1eCys4qj1H0EUHJDOYIqRjk/z7kEsAgKGIgv1LmQ2ddB5Y\n",
              "4EOCvTbXtqyuI8UuLytLj1K7jcPjeZ6jGe6eT6Rjo45RvyO0UCMaTXB/TkMiuw2RYAf6GtW1ZVHA\n",
              "u2AfIeGI63fafLLbme4pdE8Jq/u1FHRpKyNoZV9dtXejRxZrxMp9r/JY+41IqF8kEJdTX48+4i3j\n",
              "m8LVxAL9omxMz2gPHB4oNonrLFZvAORInDeEtygCLTi9KSUCIyeXBKHEaEnM6x1uB52DVxd1+D4D\n",
              "V3MAkvMlon/Mf0uM9kAAYbdFv0aSQ1NsmCGAyAUN9671E4vDpDzojjrEDOuDDnIvHqtPRxy9QkrJ\n",
              "OJhUhfj+9+Nae4RvVrOj7bedpMpb8J3UI+N/DZxX6s0Z0EZQ3NOWe2+zvIPpNdvNieo/bT0MYka1\n",
              "J9hCWWRnapDCR0SMWhG4Pg8p7b/VPaLGwHOOjOJpGGRUp8jO/3NZHEQPncRqiOJMO4cbD4KwgH5W\n",
              "jnDY8x/j+FzahJjSuHgWAVRmfgfZIfzLuvuXi4jtU0bG5kdMjTNTIkSha41SN4T9GcJd++JJYic/\n",
              "CUgNFZMFfh3inCaSODfDF4FU5CINQAHc6r/FNst+xj8rM2sHi04RyjHwaF45w+L51Qh2j+bh80uM\n",
              "DZEjzH3ElNXUbW/wqEimst5JCLTVfeiacLD+JUHZsYmP7rLw5m5OdCJlyG1dvAp5wXu/gmO8KiCd\n",
              "iaCZnqVOLZGEpGX2XR307JOzY29o+Z74rVcDQ9akKjTEVZc2nkV2RIZCs1gEI/yGalA+83CAfjOE\n",
              "s2Ud+Wo2J1cceWyqNYVBX/npnQXU6QdqDsExfuLLCC/jOjVYA7dj+fAgR/sF1VSgBABL+aGHnMlO\n",
              "h71eQQfvkfnH+f5NJ7DLNafQPb/Y+2aQoOnEoU1J/TjIAfUIprK+MdP3Kmuvq4g4GvrflRmsCpF8\n",
              "l39fKao/AaHn11avL8LEw8QA9l36VndO2JWyWIR60whhaRrtgvRn9cxaawB+O8CXPSW6oXU8OvXl\n",
              "LdYC9pyDFMK98l9F6jmquqYH2si0yQNvTojQEKcEnKAcOVVNiJpJIy4icZO8WS83yS8hv1KXZhxV\n",
              "ToxPF5UKQBhOoR6uKP8DsfFzW2JXP3JAQue7ynf3ao1sA5+SroWKrCt/9M1BSDmIfutAQFW/aBx6\n",
              "Tng1/ChgT0Pv+uNUWwzO0CihdGiL4hmtA89JqyvTVIxbpuBc8CYseIEiVLKIgxsPLBy1h0j9/9r6\n",
              "V+MjNmLHlPZWC7ss27lDoNUYauHoz1sGJv/gbOCvHwbqxs5EpUb5Dw+bMqN1Ap5vWAnmobH74yYA\n",
              "PNSB/rP2S8R8GoZ1tzOzm+CnaFrFN0beRBsthLnjIwhdgcCwjU01WacL6KgTFkHrFw+43c1+cC15\n",
              "3V3IdlZtEZ4cjdudj1yhytcu/rEvgNZiXlS1wXKGMNRRQJGyFRZuD7WBdUOJ5+vH5adj8fCh1sAO\n",
              "vPWG4Iq4vrwJwXxuCZU03Qy6Ci7OP9bYPrlztD6YzVGWp7eoZ16CypcfUoQZqiA8Hh2uhbEYbcyz\n",
              "QEZBhu7vZ8ZqDGLRwQaEbxYkkm3KwMHHoPIhzRwAn6e+5juYAJN75DaO8ToFVsyUKmPfLLMWA/0W\n",
              "E5aqwUnb7LVNCgNleh/V3qd2U7lvkpz9vxjIfd2MyfmlY8/0VsLmWRR8BW9kVmJvFLjp3GIFHgYZ\n",
              "P9zeNpXnmpxzW9QfvVTAzaBMj5Z8Ik/jhH7zD3+D5r1R0nc4c6uBq8grhBlNXjheXao53mScFMWY\n",
              "ZBNn+mOSvo0zqP43qVFHuRYEphTEuNNoJaIUlk80O8FYHLyqGkkqNPM1tC3HE6VcG6yGQZ5A3UjF\n",
              "Lyv5x/8Hh2Elypgi4dszGnHMFaZl0AauxWg5OwdqFf6vRKfu2e5L3vF+5hBu8/OJfG8KroqhavNK\n",
              "kbg+IYzxKDbdDAtBDojl5h6Wm46IV4dqeqcQdZJlW56Y41RPKlNnggE6f3p+u0JNW2kswYwlzqRa\n",
              "bnph6ooxmNadYk0lnNC3UANUZeCru0FeQfQRGQ+fUTptZYZHE9wecJHHnPktd3Uin98E5KxomK8E\n",
              "ZgtH6CcPAsrUx8Pdk4TqcPZX6qkjf5BspcFVywRYN23PRP/aMP/vRaxAEGPvErvwe3cABfaA9JOW\n",
              "c1qmC0B9p4NWEoGmVz7FprUA9BDcP/MkwXEV80HDuwAAChEBny9qQr8B3x1jNLeow7gsABdbV1G6\n",
              "2rgYfoPIpms3FN0RveLJJPwNLoBHKWC85n7+/1j+1p0Vv9jrZv0goPV34w0pv0HP9w4CUChubIWw\n",
              "l+YDROCnaZ4mlTc+uOXJKMmbl3fasL684Eb6S/zwSCkBP9yrwcqQrXLMyDl1x+YS2KMWJ85DNWaH\n",
              "At+YAPQWdFZlHjTwbOS+Eu9wb/4kh+HxlSdd2L/BMcbYRJx5dceV25a075X4Is/FjYaixIBElHo7\n",
              "bd2bVr1AEcuqOFfDhQNB0GEkQfwcZsv/ZDYkk6cOQ1aORmWmIAtiZycYrUq9rMjiuFBwk1zZVo5v\n",
              "QL/yQqWt6UyTAmhPoSswUktn8Wcb/e8WvkS5ptT+zT9yakenV3x+ubekPIp3+YrNktrxQvsiWNxs\n",
              "5SfdQZZv6s4jevwj4griek2e3F4Nb/MHpK+pWq9/909X55DwFVbQDcxlRvDW/8pF+zhYc2vyOfxU\n",
              "X5jp/xtpI0sxTsSwOZ3M38eJHzz3oTUVz52X40Obm37LONVB82CxhZiUG/ZYi6crky4tJIItF8s3\n",
              "G9jv2V3ysyccfo8q0/Ps88qRUqMsvQRQyCMth+P0+uC1EHzixrUWaTsyLYUHI/nttZEkRr14tNFN\n",
              "G+dTFzwCxkZu4VxWJzMIg8bpWHAhi/XOe9Z5Bdc6EwgkcUYxD/P6oQDK87P/UsI/If+c5tMAlOSF\n",
              "P17dH3CJZVr/P5nE+fHmKzHqdxEI3SezrndN3qeN1l5/4OII+o+HwfaeWOpxrP4m0d3GI4I/rw/N\n",
              "VGLGYKblDdsAnqwfK71mxLxRN1A1MDcx8ATIefMTKkd0hi2bVX66UF6GMzu3ZwjZygM9tJQtr7sx\n",
              "Jcj+qmyczxjOwnSS4oEDXVZJDAGppeBnwVkfTR4nmjO3vp/LnDwGF9nd3eu+a0aIIxA5Yna+ukVr\n",
              "OSzH/8VR0VK9EeFWrDTx2YKv4aKxfGB20H+XupAiSfXmKRamDXiuyhcxQqEBw6NJrq/JQdv2eoGG\n",
              "0zwenld7TH+1/NstmLN7IXq75urnTTDFvknc8mZXCm7+n8nJbi0pCn29zh1YhML7SQei6aHoNdcz\n",
              "/G2ngHgvpFCMhARNhtxDEWXmEj71rhAo5JipAfTjlgbK2kUiEKWf+g1cTP4dgKJIcuP5M+V6Z+BS\n",
              "wo36Ucobsf4UObEgsXJGfbjCPu/a/UTQeY6zBoHOlBXUYAI0+XTkhP0UKYVVUfMG/+z//mVhLz+h\n",
              "7OoPrWY7B/A0AXNETo2rsGoV9lDuRe9pwKGWzajI2h+bACPbrS9qJKthhH8aVGVeM8fP+PHYXjeE\n",
              "MxQE5UNbY6GPnSgUX+YlLCduRu5i27ot9EKSm97c6QJyWv2PGIaDdS43ZbNmIa1hQJPEViVM7oLb\n",
              "9g64wm0AufBJIlAOkDOKeLs0DhMF6VbxF/vKE6klvUoh0QOPBe08Gqe+NZ1qjIWXOVM67/7RsDo+\n",
              "BO5hSBjtA1orhu8FlfZvz4Jq0zlIBeVqPjovAoWFnhhFpk6MWzTLaV+uuFea3vfmBwRo1bE2AOLE\n",
              "g2pwfO4x51dcni6VQewfef8NmGzqCY+dT6Up7IkugR8o/y01m9wwZP6mNLHW++Jj1E2a5NAiaSS9\n",
              "SrAZ1zcGz4qo6sHhJhxQxSUlitNpZjw/9SOg3uxnpV54X4ARNi1lG41xcVsT9SOaJ7RPK84J/mKn\n",
              "zvc72HZaKMVnyYKpGGUwMZWraPpW5UT0B4bAQX4ciYSaI6ml6NTSoK75Ii3p5yHRPnJN76rdog5F\n",
              "GZp466MM87zkx509eqp2x6wK7QMBIwjP5+r3S0SwCNI1q6FvtnrDheTCz2vRo2EHHw5kFsZDF4Ex\n",
              "nYBcccvfAIZfOYRFJEwTEpfPZFP8n7I2blzTMHpDgW0PZInqW/KKVt9Adjl6A72trlq8UI/qGo+3\n",
              "eNXCGGsX6nOtkvuvPANcHP/vUngyK+A/QGqpKPPMkYKx95cQkWkhOgy4Rvfw/q+BEZYmAgJjMb5f\n",
              "q3dvaFJXnj/1768X3p7dNyfxmVmQPx3SK6LKeu0QR3Q69wnyNMQVO2zjYeyaGhz2hFSIBhpLeqQy\n",
              "xIbvGMmW3WzA9JqWh/pG+ErYtf1J3IzfzTUczlqCyKTiYr6O/VxmG5XbMsgQNIt5vTctQIx4oyU4\n",
              "372R2UOoCSwj5O1CBQFiJ2YYET5o0QBF5zo6lwX36V+BNScFtqKY/oHqcIsv0lh9fJ3dRBwQyFqo\n",
              "BUDF7WcC6Y2Bnjcbswfow1ZB252/Hnu4KsWDDTz8Yc3XyZHQQz1GtaINcnXRuPINIcuPMR7Uu62l\n",
              "Ehw5B3wjQAeAp+GGm+m64AE25Zm16UsIn/AFHTaECB44vGCyW1juRTsGVg45J4hmnxVMY+fIrzmu\n",
              "HGNCTz59OYp407LbHjqZfV3ldeW3xLr2hb72yggjQUBUet0pi/navkmsP0wvHqWCxk4WkURfPqLP\n",
              "P+mXOEYKojRcKXII9OZmaooowK9CmO0hx4r4QeV1QKadpySqwazW2oEMxgAeYvTM961wOoLk4tQu\n",
              "55vhlaDYpgN4ImSMBHUtc4s+vVE0uWydw1eb0FUcxeTV8E7vi93+0qNfUlbkaymUmAvnqeoAyM1/\n",
              "H1RkGDz0mWpFEGZshMIoRJ+pZGrE+ISZNBby2cOni1gEwzC8hR3XbasX3ir+G2hdU15fx5Nc7yBu\n",
              "CX7Us4PRJwabwcKiQXonOqkYeoBDjZxhVCfka5qXlktnwGLdVp4SHn2iCrgKS7ZoshBJIDtRr+Dq\n",
              "3ZXIbTSht8/AD82M/AUZfEy5Mjatkmk79+De86OrZiIToFkGLYIjCThTMCmzZFnGxCDNfS/sxZ3+\n",
              "GhV5NKOulayYK/NabqbNCrIOfWPidBWHrGS2YedOCXx/FnOaQhlXRcy/G8NVVmS4pS3W5XP9LJIh\n",
              "fREg0Thw5CjysoalC0r/P8Uln/CYp9lidEu4Ejx3a8JyXwyvffDIskDU1JpyMrVF7Xiybwif5Pz8\n",
              "Z56MvkyqHAg8Y/5ffwJHSNeoHwSYuYetpPr/6YeJJ7B6N3eWqircHO026tBLdi4Owt5EV91AvZ/x\n",
              "CzLikr3JFtDTv3cHwN0Mgm13C58/qfkfN0+qlNh83sRliDh7o1XzISRwAokgQV0DTQNRXKTwQuGY\n",
              "52/43gWTPb5IGjoAltKflfih486x5RdEPlIPZD0ndyA/OivTDzB7SUZhOjU+oprV/MqR7z6o0BEY\n",
              "SFJHPCSkW7PxJA/COqfNLHYEAp6QskZ/3B/LvB0smc7QP/qC+McOebWK4DmggzukFuEgvUKjolc1\n",
              "EUfGBEN8kTUfzj0PfytyjDj9+xRrFbGUM5uXmNr2ekDaA5t1r+Y2GUiuYv0/OXRLvcYMc/6elHSo\n",
              "le7yRB6R1kUOvuA4vDC9uY9uGegDRCQogEII4wFj4Z5BNIJ7Q9Rph+Lmr+qofpAAAArpQZs0SahB\n",
              "bJlMCGf//p4QBkehCAMbcAAAAwDalUM/4hgQZN0A1dR18q3vOb3+Ez9xKTldXB/EdkPVwUsCxpZv\n",
              "Xov3Isp1c2uhy9r3eXM8osjF/SEm1KCrPOTFtjM9pNalnRIpN64D1Y0li7nMdoB62Dzk3YDzdlc5\n",
              "9Ruvv2IGXWT4gK+wMB/R3lvU8b1l0mm2WJo62ibL2ZWYRWZUbVbA+BXfU/jHFW6CkQcfnvWgMJIG\n",
              "7VxKkklUxZQmioAMH3/0zjhRWfQFamZs9DH2jyhaAnaLQRxoWugaDkRjGYF9RGPiURmUf6c6AsJR\n",
              "IyIsZgvR9I+kZXFmlJYtRnwy+HAuepDWcIcZwEf/qROm8Fl9ve6qapySzAwI43PLqfBqyCSE6/5n\n",
              "1GelkOw1tCx2udEKPZt15Duh4oK9TyyNeB1H0uoXSbVycJtcd+cyytOql6+22SqMiAdaGqOnP6Gx\n",
              "aZpiVXtFxrhKxPciys2nlDD2ADOFULPl0fdTfKhhPoI08MmxwfZWOSO7PYjjD04mkBUqpggDl3MQ\n",
              "TpF5jaVs40NWVQjUFihvK/X6lvL/uhAR4LjqQ4qjPzpWxLTwhpqITysnY7BKBapK96vqbP/s1sIh\n",
              "76m5faEgX6e0nHW0+NsrHlSsgpNk2G4tfSPITUE0o12XEq+s86BPDqDijycOMgbHHql44P13PkAY\n",
              "9iK437FZDc5ZXF1EaBxZNP7XmNzH+H/xjBpykN1p+Z/JerKnhPZOqL0hgP9d5tDcAeQHYmDdrguG\n",
              "kW0TdbBXAV13et/3IcokgA523nJqiiLA/khY92JjCT2u4W13OkzRi/r+6kfXoIF4JXTxj+HjdUIz\n",
              "CRVHk6htoPcmP72XfJop6oduGsWC/MslnyZTZUcg14we2TvOuIxJjVSWTvJZE0znfiCjDjrbnuut\n",
              "qa6DVw2/rRg0Fl1MBRrfbw2opnfIywHfqq06kR8soP8RO/wRupU5drOCX1XBOtUuUO7/WthrFX4D\n",
              "WZjC+8fnu6/0JUCvIKP5KRf4g4DWVJPRWqokghjsofN3WugC4YxEjDQHsOUIxA4w8KfRENExXYAF\n",
              "RdakD8+q/z0Q3G+e35LYXLQgOkCH7a4+Y7MDGjdxOphJVEhLNfTE4MeHLdjMODVrsX8nbwH/FLyG\n",
              "80jw9CbHoXJdY0DTZhaBGGM3IDW4cCjK7QQ0dTcsjBKWCg8N/8x/3EAahtGRZeczNmLLb3DPYFDe\n",
              "MirZRcAB/Wq1EH3FTMHAXnSWy8ZO7EJwCRXqBXIsc9KkEzstyc9z+8AlleKuNl0J0wt+GnVA/GV2\n",
              "jaEXQKrAi51l9mlokPdMRXOn8lfV4vd3K29nETv/qzlLAEnjDkpIBOK2MKkRfrwaSFBhtmHGhG4y\n",
              "0JAd6N0B+KYg/r78FiCdfFH0JYGiT0FCXFJ8vviAlMOI0F/lKWaE1JKtiN2LBTuHZ4GxJROddwf1\n",
              "kBJSuNthd9zGW173H0OZYw9CqcFuVetYe3J7nJM/XHzkNwOZOp2QsZCUE1neh1Xp/59/kGXb7lVd\n",
              "TI9LZdUF/m/vK+j6qcvgPpUYU8FOWtl2pszf8ihIM/amdeOHiQMYikWeJjzw5POyY8Pgr1kpI4+B\n",
              "CYdORi2tJEqIft/UwptbZlKQw3wviT1x2db9Okr5G5/OfZRygx4jRkiZvN+xCVL7IFFcos+aZiEN\n",
              "oNMfE1ErUQWhbNtR8yDe7Pwd1brp+GpIqGXJ+gRW3qA9m6c2eWrV6IvH7QeL4qaAVeBCpkV7o+8n\n",
              "VGclTCtycAINKtohojc8DPj0bhD4AntQmetUc+3/mpjWkywv0YPgAIZlXZnwGhCmcU+JGv4uaFOr\n",
              "KMjVm+JUCSO3BczefmT2jKuxwJD4sonrNRRlfHcodpxneLpwVahhLr7NtJYHWjk2pfXTDwyC6pqO\n",
              "m+nkrqrqJ9U/vNzxwMCPG++FpGKW2dlk8wE75XAsWs4t6Q6aV0BSGWggDB5WideLBCdl9hKKx8m9\n",
              "s5KR39Po3GyKn3CmvkhfYreIbIWfZQhs8lLPzNoYmGODffkKrdbbepl1tuM/VVkewEgfhpbZeABM\n",
              "YCV8zG85ABMc8l8ocxST6fXvPipubNMqmTm79xXDPNEvdqTJhAu1vUr6BycTvbu/KSiX4gAohWTA\n",
              "qnLz519C3Iuur48S24y695dVFQvwnyaYp6K4jWk8s9KVWlIy+uFuN+19d1ctlHIWHqrnuHmcm/qU\n",
              "sdGC719mQRY77lOWKBHvKpy70Hg+y4V/gqigjSzviSjyjcJVr7bqz0nDzcCM03WUlnc/5PTgU6ld\n",
              "+TvhZeUh8iUQ3XwaSIW/MD+J9/XeGsAdn/VBWhfRb2BoyTHWHPJyWC02rdkh8tXzJsnlTc/iSrW4\n",
              "hkln+l0h2m4JLuxSN7T5CRA2CNonnt3NZfdZD/Z2VMz5/U8ldteiMPwsUlFpI1rnzDVzcZz17+gB\n",
              "ABKzYArwWi8S/0dzIjYczPvCP/KyOhfhkPc0qUKriY0F1varQTAQEOb8kcF7m0O//f0yZVSkwco+\n",
              "toaFd1WUPCus1qnS9D2h05ySM/JtrCxB83Vwuq/h76kMUeO9UAJtEGX2E/1/xpYGV/gdskvSYUyh\n",
              "UTVQoZG3VgHVhi/NYXSmpgYnJPj8o2xd53hXpxcyohgA7MQJkPc2XzY1qLGk30oL63fvIJpbfrtG\n",
              "2EAzoosrh64EG7g6z2yIM4N+8fvVnI8Sc9F7pUN5IXOm5tbrCDlrI0Mg8A3ZpYkqfzWCw3KwmQnG\n",
              "1VvOvahXb917Xr58lB5d/AaVKmfp1UCQV2g39Xs033yY5MC0NqBfCtTM3pPnYoQRQifv6o4bWyVI\n",
              "c280cDoRqlkPEggy0mzJtB3hOJOjd0CG3jn8Lbv5wD+vfAPS6uwB1KCa+1zeNhJZUlunLwGnODrR\n",
              "lNlUzltIDCVElszbgegjslSRjnYpmzyQIpITlQ+p5vh0ZiivgMPml6Ibz9+5soNSPf0wDbo0uUMY\n",
              "jBFLBDZjX6Xnjsqph0bKixXWjCTPg4FUr1ErVn4LY1z3X0xjStVZ7mrRP9ouRE4SdGcWxNb/bUpn\n",
              "y5SlAjvBcQN9+SvmG94JDthqldgWtRE6U5sBZdSI1TEvse+8uMFNBu8BYGRISDotL2XIJ0nMHjX4\n",
              "h+9r/+UZ1CQDkImq8iaK+kMoZmjXuGKOENO+GE7S2ukiW/MCDXyThOZRNwhlhpnMOSmWQyALFFIJ\n",
              "KaPkNvrIoy42OdCzBgXs7VtjRiXg+qbgL8Ltbs8ZbsXcA0g6EsjtJu3+Gt9weoG90RoLLUxmaLaE\n",
              "Y+yWONd2WVZKYMJJ22wvPySz0qng7vAhQrBvGjSmzaemd75QZxg/n2d0hgK8hUPV0MfMWojE/2ai\n",
              "alHJjdvfC+XnZuqCSNukV4VD8ot8ycwD2btkdWWZYAKWId9O7nbzNW8BuJBJ8P7qFeYs9t6zjz4+\n",
              "Hpqk9HddG+QL+HfdZmbmDTjt40PHQx9+f7JPHLAa1CEdgLXVlVaW/R9NcpMkQlx8str9oBNS5QiU\n",
              "Bw7b2Z7WcAyWl7kLxlerV+YREafzdZHGsDqZtAzLzHsq11CLzUSrLcgDv5svaLWWt0YH0qT3U8Nw\n",
              "JkuiY1it3ToDIR02Gs/IaaFX8AbJJoNVGECsB4JZoQrr9Sq+p3LQGhKaySPCABiP+cf93EiohPA+\n",
              "ovTJciHnqb5xMVzvGONo64U47hoOTCOgsUx/W+lJAMbfxNn7tCdmqlcpz+Gs5ijuFrKAAAAJQEGf\n",
              "UkUVLC//AcQRr0znO3d5P4Zzd1wycFvf7pEfvTCjPF6FWTNThSLiHePQ83Ep6Fh+YNRKFcgfpU4I\n",
              "Ub0Hzn2svD5JbOGAVcpfx3OGunX+g/IUkpUj1AtXzv6aMzz/97wxdEaobQIuywcqih217ttgbFht\n",
              "XZcDP0K8xkCFDXBdroWk8lEeK1UcxzxbP8E8p99vLl5acreDnh5x//grDjah3XOWnXZu2DJNPI1k\n",
              "bJnYkZLox3hCaRbkizqnGowrlYD6EDan7KWFxzyTgZtUy3Kf2/TKtoSZoFVmr1LQ27NRBddAKjtw\n",
              "/10jXYaFxcUNxRZsGaUTazCd0d7PK9wUCC4v6iRuzq4zPc9PCa1u1RIhggF42yahJsiGHOnZmViM\n",
              "fIUIqWOF2UL8kckHiHuoGj+W1S7C0W1rkKgHhZM/nAA9rr5t28z8traHIlYDw/9FBy4DCtkEcU5T\n",
              "2ta0h6AQT+dxyAfLCEcbTmMLjI/BJAjgnCZTno2pqoo6iODP7XJGj4QJpTZTgu13CdZ0CWofcN6n\n",
              "Ta4o6yX3cmc5qEQmJW9RGY0FYwkksVcNaFsLcNlY8j+bb+RRwLax5PtOEUWqKVu7qgsp/WfvfL91\n",
              "VEuypEXnahQwIodIZLzDev3dQ+UeHIAntF5QSexwRxl2GWefzzdHKLQNzt/rStTmpY/nrTa5I+AS\n",
              "PLnKDcuVWSTmjo3N8MV+emr49o3AbQRMQn8W4YCRRBHfX1Yb0LAhi0mH0nArIxsdYErlGDc0QYj6\n",
              "3FfBQeG6w1/lGjclT2MH7NLdqGdwGDW8OUXtnfoxGMc7SqIEVT3meOaKwavwr/BCpyYh0NKk5qSR\n",
              "Ynaa9vwtQM3WjY5J8yLt7gyeybUyfCLX5mNfMroNL9shXoX4hz2NkI6wZsG0rz2qvulMuUaupPxC\n",
              "O1PudUXdpptqTewrzApmVyOAIO4W6/yHlGOzAuxA9AoV2biu8moHTMhYmg32GLH/Vs7ywJAPAaxc\n",
              "6ECNgdLgs7Y0A/m8a/+igU/GqrUR5lr9ezMX6zyEkm09uP/1krEQH5ZOMTYLuwk4nXRZpzCahoA3\n",
              "nw9xRyp7bIpUzhFtuJ8Pwv0DgvRpIYV1CZgVfGIyoeK4jT8hEdAjqDO8yJF+ExyaitNSAYKhyhwq\n",
              "W7vBN/lm82+7T11dU8/a3NBTUrSqwEznVYXGeVunGs75Rwj501tOf8o1MW75MfelPJNrPBbEHsll\n",
              "EyU4JmkKGj/+KG/KSA+djRO/V13C2QodcThKqLVJU2KWxFWSfgT6Q+vG20GG6FocXR2+LmFMs9Nn\n",
              "T+MagnVqLgZCETUUpjP8lTtcyv/z6yJuxd8uB3eFoZ0wn7/sCfSV4Ya1J6oRV4hc1zZ4ssuPJxlW\n",
              "31Y2sqU+qTfj8FWXVGX9ml60sI8cA7CIZ5/JKyx0VMa/snWqhOJjlcd74jao5QRu6McH1GPmxUMG\n",
              "8FZbDz18ooayNPU8vCBl3AlHaETwbe08vrG1V/aFPf6ttKDXQfOQA44A+V9ja40PkasHnVmmS+Z8\n",
              "Y8uWHC9qcjVSswWFM+6JOh7SIb3aAU23ywxKGFKvAFKto669MRYJw+w1NyKMPSSJG6AMPA5Z156A\n",
              "P4UboriwZhwOA41rGuokd+zYhkUXPDAYmYqV058pyICnXr3uoqRyTuQc811CEZBSM9NrrVFYjvrA\n",
              "tUTqgXYl1xR65h25cHPRY39PDVqV7kJDznlX4Hwtp5jeyyEYImWjeNs5esAvBefY+amJTZIyxPXv\n",
              "LJnhNSsDlfB1sNJ/9teaGTI5nuifQQcxJobLqdTSqWg7aWV0HgPA3gV5tiAO+JNGRA9Fu0Goy0uS\n",
              "2AdNVWK7S3KL3FIylJyAr6lk4gk2y8LWAXMu85+qpTVb7CCnnvvzRaSyu4fg7fQX01a+6n6/ssKS\n",
              "X709OupIyBSGJ6tbz2mvMe/qijjmQyvI8PxFsKvyLOYKfsOaqlPvcL2ZcYz2rRxOPNphtEXnIeiE\n",
              "tKL+MQEwdZde57xa5lZNogVU3Wvdt2z5oZOPaHWDLJzHJ4m0Em6bhI4C73LaP4uBrOdlOjrVUexo\n",
              "BMd8hXlta9CWZQM80ATz3rOv2L0S3cFKE8xBnBuX3wSB+JyRJDzFbQpPlmU/w/K8Jwq3JOZHO+Ux\n",
              "k97sT8Y4nfieL3Uc+XvV1IKdXKcDIwufrAm+EaJCf32SDYc4mtpNbf39eel7/h4rAz3z/U5wpONO\n",
              "gH2doJDt6+u3AlZS4WzeyzltK3cAn+KfFb5TWtDU0fBFg6Cl+7fIyueg0gtUgacBqAnteflHst2i\n",
              "/wCfhVKAgSZ2J8bo4yK86Q78pt1UJgZ1UfT/6RpzaC0vq5bGl3dHgBOnT9KJ+o6cZ2rdnOC/4bU5\n",
              "7yhBqbwtrBwSHNNJFrx/EeT8tRuMjQ2ANki9EUk/L5Aa5nY1dJaE60EfE2KBmGmIB0a971D4LiMj\n",
              "bilAv60Kw9/ujypyNDtjb0F0E1MpmWlE5BjpyR9aVp/23YGiMqEK2lgN9lUYmGPsJUHOM5yjkSld\n",
              "J7Ybw3gq7MxSTE3nGsV0YC7PrqNxsNghzHIV3EZn9zBwLv45+J/gLZbsrcMvzPQMpXRiHGZPX2XY\n",
              "v98ICMj4Wx5g5BT0iZx2qMegWQ9i7Ifxs5JBV9yfS8TBufqG63vbFF188bsT3GS2E/MXnCkajXzZ\n",
              "/DBqQgPitDN+us5UfdIKyHl313U4qgrX8i+cT5M+bVdSvrY5Ryzpcrf6JhouiyHSkS25/Uv6gSZ2\n",
              "7kCUS42Sx/W+WexalsNP8MoFDkq2PfR5Y3ftDNyGq65eIiSvS+dwaiCpdJKY4JdZE2PaIAdE7Chz\n",
              "kR7D4jOkqi/u0lxdDZPfAZ9o9wgEQ4wqdms3OvZHhj5fjLTV7cla3DNhiO78IMU0gztOEHSjFcbP\n",
              "BerWt9FNeBNOw3ZtAXxmK4KpSndxHrmjhkGXTcyvFsrxF5zpDTaco+6Jdsm10z2af5xsde9GVYXK\n",
              "s7iEXRSDBoqkuu/k1PS8SRNiMDHia9RY9dCyDTynbIYIfbJAealP1N+eDTQMcc2+EqE5+y6ewgBv\n",
              "GOIMUwp6pTVE8sZUMw7BIvaXoSfPA4r2cEesObmFl7NxhLW4rtYTyfMW8KkfEA94kn7qtYYMasHI\n",
              "ZbjPfTuijAL5gS2C0MDNPDZYG9Bd45OqiCwfP8EAAAomAZ9xdEK/AdfAP86pYQAtcAlZjBrbU78l\n",
              "/0tgjsDJLoaf5Eq2pALnsgX9R3uIDSSpfHNaEWVQGAUwTtxPmM8mTbvfqi7RtfhMIrhWeICH/f6j\n",
              "jP5crqDTxmjjv1fc2BOpmlahtO1hUP2VS52uGIVnhD5q6p4Z76ZPhI61Ef2XCJdgCJgViWcow2XG\n",
              "N45PhSsSc70F3NGpJvx588K2YLXs3oYmiz4mTJl6b9eAT4IO3kOCQMkI3gEadfbRhtgi2cMXRQ/f\n",
              "5Vy8cI/MfAZWQWlI7z+8pL8DIetQCL4dspKhEOHzBQ7edXeByDtWZmKVxOO8FZ8f/qBM2GYYm3iD\n",
              "d7AKifox6WeIO0VF2e6xyv1yF+5rwSEE9/Fz1iJgbh/+6ka6Klb7a0980ZPw0oq+1rvkdnLFhKGL\n",
              "hmzZ3TnhFBTQoQOYUy1Zr6OfquHF6C0c0Zd0hlfzAoj/YV2TWUg0Z06dtwK4joDwG0lUMh0rNt3E\n",
              "vOiEGbN3M7gPNKXYrgXTXylJW+eOshmwF4lnvhGyiRYaDH5fhvmalMdwirivkBzYzo8ApfeMTlAW\n",
              "YnebNQ8r1J8Wl2DWuvCLlEo5PrnsoWer3XM8mQ6RkmyYFOXGad7jALZSKlfURfZWBs0Gue+8iWab\n",
              "waxHt8PTzBB1cR6NFfXwnsYTGwUthsIS/Q3g0dfUFU7kYMcoqR7Gu7rXnQGjj5YwgVI31JLfMXyU\n",
              "kY0uWmb71Sj5AWfVyknqbtEzx1qooQBcADc2bHijviEIfGRWezLH1iSy8VrJ8sXd8NXJX3j376aY\n",
              "UpCzlNmit7Ra9UYmTvsgvSG4Z+K8vFKSFcfYj2dAV0P9lGV3QM5C16R+8OUXHNMSrMSPlABuWg2u\n",
              "XetovM5INXqBPkgj1cQDNR/kAyChPkJIB7dKiZ2DcsGHAJT1BqUasKOIwUhJs8uaCT358fU6RY81\n",
              "N08Dh48uv670wplooJ03vFyCEgZheffY8pb23tx43/hrFdEasM7KDLT8zkL0XL1xPevje+s3Sedg\n",
              "QVUkdL/REmdG5shCAIeeuTIk+7ZoI+AKh3sjyx/JSdDPayRXDLe/cc3MhL1Y8gbVRnfkeTQ3vfEn\n",
              "aYTk5kbRbElWpbL4mEvonnEooyo4VwBcrDTXiUuJJQSqa+1NO4nxFQqRjAPJ1AVJnJagLlGdCGYK\n",
              "uSniQTDDQC354KwquTUJm72X8Nsl7oeFEuQb6Avv4EGG+iJjt/sXN1OgiTGazX/UgecWh36x5e5o\n",
              "1ULkTSpTUWIbTfeEiJmx91W3kpLIYbUdRm6aHn5ltxo+gUI942/Re6H50bisi6ob/+mFvKSAqngV\n",
              "7iupfS2oabb3WyqMxOCUXD/gyEv/McrhaPHwQLRrF/DvaTWcGOOCPrH1yUsCmrSni3balpeophxz\n",
              "vAO+ZktonhuarFWLsFN5KXj6eZL0oNp62dQUkZgRYGGh0zFwUiUIPhAHhi2hPps6TXAEmoQs7LVQ\n",
              "v344VgbXagFC/BkMz/1bYtgF69bcTfQA64sFvOFOQGpaZ7zl9D44v+llMbEqPtM0Sh9UOHfAtAt6\n",
              "zG6fV8Jzb+huBU5F/1jG61c83iGUEMAroqFiAahcawXxxYs5LzfniH8cNi5EJpodX9XKYjt2qe6F\n",
              "8ekRptMzH0enx6YKGfKbaHqPibaYA78HcuQJS08QKMgnPbNjHWb9O94tdLuEw+gAXRIId9EBSISI\n",
              "UwOJKK5Ln30RU40Km8Vgwrl/T5HPbIdZAR22cfV0kLzVokvpqvhvIyms8pxMenNHge7SY/Cqcnqj\n",
              "C1yupW4O5Kx1jqt9CbcU4zidCw+g+tEl0D6NX72TdLQEpah2gSLLA/BJnlt+7Ty+rfgd2ajloXG4\n",
              "K+Y+f//Pa/eumT5emLu54v8pkeisBMGeR6UofmmvoxoE1U1udmO1IG1dAU+BDJoHx6IPi3cwsHYO\n",
              "wVz8UXbXiKXBSEc8mer7ZNF6g6I2sSnYYWFVIcHjDQGtz3+1SROJznKbjJDWcKiq+49y1tKleP5q\n",
              "e1SHksVra3RuJYfE5x8BVLKCP3RJCn3AidhMHltEzIUMeRU523KGpexEGPFWtrW/Bj6WpAh+z81w\n",
              "nySLPZo119xXNTzy7l/EPzKEu1WzTozz1Z3sPoE8FYythIfyXTX0SOnRWjNTUgMaq63+aarZezsf\n",
              "vaac/vPht4WE+n3GETeCUejezvvRydNgT9udJHCeINduiBaCj7UHCL/kS8KoAQ/HppUirc6/ac3F\n",
              "A1DJ+WskxEC4X+8E9joQQV/YXxYdDS0sIrGtZzKi3NMNf0D1W4u449C86qMPYmrxkHqKd1K9f1UT\n",
              "yfAygcCa57u9Gx45gWEdgVNL6rYfr3+9JysU7NbArIfNyfwWcbkIVuMK99mQfhVgfsgAKQN3oupq\n",
              "4inPlGMRfVMn+K5zABU3NazmXgjKExYxtjFspJNi3vTm8jICVIX1FIXbbIAJEMmNvO/17rjhkQs4\n",
              "BnBKISHdNNTH5dUcR18GK5+1Cb90GMHUWeczLT4S0eKaptdkqJNdYrcxTC+znfWVvdodifwAJ+K9\n",
              "V37zxfsUhhldW4BqU7XVKGp/vFIruLBkROPLt85S4HtImMgpTfX8INqjWbCVdUdorF82WhIQ1rde\n",
              "XrtbNAAzDUA3lwfFuKvjdTP6hkcRmuglG6/fdwZEPL98t8d4iTAYW/9P/Q63af7cLCbdJ9gpKeI3\n",
              "U54FZkgzR14hGP8FjBTlymxqK4VeRFvIrXMbwTs1Z3yMiKckS7SskrlW5JN2lnC/uoTbm8Iu3gNE\n",
              "Qw7wCaPV4trbjOtN8yFlYqMUU0koFw1hy04pS/4sy5oZTVtUzzeippqmw5LGpAurDvgX7TMAOV+r\n",
              "BGUkqQMzakzAHPLxagiaz4fBGwlKEGc/gjps5iIS7JDi+Prp1WM9CAHTgu8aWESzCMS5b+IejMeP\n",
              "CSI09tySC7ogL8coksIpeEuOyJK7Kjl+WVOFNwBVc7f1bRvILZXPa4O6fzDbj+ohA9DCy6hFcfd3\n",
              "3Oo33FGFWcMgP8QbyaAEMlrVWu19ypItad2CeSBIGZGMDjYP27vyFVDitxQR4MT4xDgdyfcMp/p+\n",
              "ZlyammA/ZU9u/+fQQ+OUh4E+ydNkakIBHylbOOomPQmscAvsUzETi061zrW+sT4V9CTotAe40GqG\n",
              "Y+omUVz2AGTfGhxpvtcOT+teBDnMUudiqnei9lh2nzgSRorjjYGpGqCyLgZnhivoH3wwxF//9ZHy\n",
              "JyZxj7pUYZwC57AuIMWFikwi+qmgBCc35BypnUGMJB2+wB/cf+cze7GasU1xSplcIfs+d43CSs2N\n",
              "y6ckbsjLzt168JnZpW+iSvWREiZhszdbvbKOrRzhzn4UqMj8gXqGAQZme+qoFkD9qOjSHUV8h3E4\n",
              "rz0tVDL4HCbZc6PacsRQHFVO5RuddmvKJOXjnlKPr8N1Bncr324eaCTLyHbvAUUcd0gnoaOEWyVS\n",
              "btlNHcsNWUfAAAAKowGfc2pCvwHYpjW4JL6gBcYBKzGDW2p35L/pbBHYGSXQ0/yJVtSAXPZAv6jv\n",
              "hwmklS+Fa0IsqgMApgnbifMZ5Mm3e/VF2ja/CYRXCs8QEP+/1HGfy5XUvQq7ttdyn+4gl4Z6Okbp\n",
              "FLRXWDn0Qy78s+BO/fJJ4RNUv9znUOtoichNTDVBFtA9xPHfxIETVzLuHZne4x34RE80Kmr8U4p6\n",
              "oMHlJUcv1WKHPZRO0qwrgszO/im/WkW03cJo37u7X1gZ2HCNK9+4r1u/6f7l9hmqV25uVP43m8YQ\n",
              "16ccEvyzTRgYljPJSC7GW1xFwNkc9iEf/IWTIrwxBjYXmzC7mfUkJvRAIcqD7xZ+xvxTWZ3wtdBI\n",
              "dq34HgFVRhpx9oYMWZ3YfszMULXt4A39Rd1jm+6p1rzG7MRtI+EP9x3Dgan4GTnfuiOKpercSJ1g\n",
              "sEYfAI5zC6/mm4ICwZp5/LTy83aqZ0Z0zyr5xfolkJMj56niea584ga0rRjl7mprEWxYQ26mVaQb\n",
              "5yuncWsHSLso0glKoGvot4pId6XzuqnnW4lx/IWk6vB47uHTBnfKMrXjaR8Qpl3Y7cQrvXHRdbPl\n",
              "yoyHrQXJMmRthiP184Pi6GKa8lBY0DcI8rLgFTbCp00nqY2Iu2K/kPL2H8QG43DokgoLVjmPpKyj\n",
              "e7CNGXbxe/ZLsBlJURJiLbgiCfI6HGqx7/cE1Dl4E4KR98kDnxRUFFmVEG4ce5MzXVmmsBfM81Uo\n",
              "a0RM1bMO2KUXZjA68EHHgY5IRVubZsF6UzCST89Ye9Q9U2x5TWyn5qu8EWNVfb/wzmrcdfHl5Kwq\n",
              "J9SdT5cir3zER6KgAsjGCWac2t8PPOiSfNFWIJ0IuJsee0bu/VLYQqXKhIBoTRU6pUGK4KDByi+m\n",
              "ZcwasXgcyqmlU7AqNNE+QaVL53ymO30vDSRFM5ruKIwoDwUew5JrXAJLA1JUbfFHdtv8D2xkueFA\n",
              "mDDfra21ZId/w8u7neelsAxOqiiOxAUmww5qbh/RqmsNTfXexp4g/TZKRjq5mMtTiQJZ9edR9Xpb\n",
              "N1DiFzl89ER1EtLThUvNRtD7FGXQheiWixiLuWjZfd7QhzkZdXj9hIU5oM/R/UQqBr3MeW+KGxlA\n",
              "g3FXe/ygWG/jERFlUEJD9aE3Pt7RAE5HqESCl6nKtRJXfrv83HXE87BaEXLJ9zVxmuGVgfvwRue7\n",
              "4tV1s+3yaXw/FKtu9KXzPjJyKj5XTrgunZNEkww1YDs0gi3pPguJfrha9EUYra2HhQMvlKHtG8L/\n",
              "p/wqBJp2qFuYzvHBmYUvk0LUAhKmVJAgYpn4faaJcbEht1pSItMHRAqZxWZ70p9KZzNGc8IjYPYM\n",
              "V+DVuaTZF2A46R4R81xVqbpjCkjJVYpQ9kqTMK2zea5v1Dih3tyyZd4ByP+81SisSXSrvW8Zbi91\n",
              "Rgb8JgOHs4at1szCCBCR99aSXfY4KO2TOxqwc5Qmxidua9g/pLQQTH/w50stDF90gW1h459ajBvq\n",
              "GNWALxKq45w2+DbQGKAvynVyWlAEbfjhqieyWMgqJxRWNYpCMhCfOJwdcShpqNTpf2IaLUB2LMQz\n",
              "mssB9sF78iG122cs+D26tzF2KS9oRaTTqagaeYvz04W78U4wXCrNF2AwTB84pcSejGbXyRhSb74Y\n",
              "W2IBWHztYvKvtovGy5Y3srPdUOYvMCy2417WMNZjwS/LzXc76mz77FfwCtcwh3dvz6OS+Kr+nuxO\n",
              "eVjU52sxAbXyQpfDDVMDELUn4Y49cfcN2StZFuZDdydbvt5vKsnMayfJEfdQZEaQGY+X/YMyk0uI\n",
              "0QBamxzU7+KFc1Dvtvj8ThkLtRZ51Ulq37DZeoO4jEsNrHemhNhVoBIjQ/ux682PDwe1pPqijiBf\n",
              "pguY34LTnHmlAwTUVJVUD4FLdmQ93kq589m7h2PADq0Ty7ZM6nfpQJe+mGnv0s/cStc9El+QYHM2\n",
              "lNrbBhmeyXwFT7mCQ7rmJt0aZFw+qSqlwA6TrBPfRdNnF6Qm54spt7/l08FpwWcKUU0WPis+eFeD\n",
              "ifhvSM+Ta3SGoJHaow8lr45lWB+LkGGcHR7RLke+cYDQ5MqE8BWEVwPw9BLTw+ynXqFEb6+q58x+\n",
              "suyYzXra8jINmSJ3sRnf+NISPfjF8LTIC5V64K37W7avn7ASH4E7p2bO1E1Oh601A5WjJyaYHTn+\n",
              "1W5N5Ex1+Gc/O/E11OjgNiaX/HSG4sq0inMREVlHbdxndbyS4jDEq7Rq41dUTPMz3lxaX96107eR\n",
              "OrpUneSjQ3eCnG+4vBwhIM+Lv1aJ3BCHvI4D1OY3fzbIQJpgFCc6/i7ocYTxEa4pMgaKNL8cZ0a0\n",
              "HkgMMDd9l46PsmQEPuagAAYwj7Dx/ICrSNCwyIpZneNN7FzBnPzvxBjltgwsUGLv+i0Du07QPeD7\n",
              "sTw4mSHrtS0gxeMmLlnLAWYcme6RYUl/wSbYjP6+3b99hrD/GwG5Ujl0gWcXJbmMMV4Dk9d4+m82\n",
              "L/rGAKX94WTB9dUR/I+eSO/JCiAhwJcHFAD8740WbsG9UUGTgk5mY5KHeLCWBxkvGAipqVDLItfU\n",
              "yQVpWz2WkNbXvjinXpSWLsFJJgoS8nQZ02tLzaJDOMnVi4euMGW46ahyIFFaO5lCZQw/OWTpQubX\n",
              "X1QiN5v288+3pzr1Cowp6YF/OihjCSy1bxfRxQjNJAi8SN68znEnfMx+PYVgXDbpWdLEq3V2nDpt\n",
              "/VUAjcQerIebMreXL9CU6JqvCNXI0kkl9zXe1L/pxW77rLDN1EtLwAQwVi5cbEv/uyOIJixqrjxx\n",
              "9+1iuDDjb+kuKXceJlJfdrcAEtZ+9SxrcEtzkfQ6p2Z+SaEFmi3gQcnUI7TWRvW7Fe7E3xGyn7m0\n",
              "FSz2qpe3toNg/QoY+xfEMxU7cNGAgBW25pncEMG+0cBhDVH2sj9DeJi1lXIAg9AQLWUOKs7ydo/I\n",
              "sQWk/fJhIshC+ayv4KRocW7CBZdJJ8E0P7wHryhkrJBi+sKXT2FuZvwCoLcktiUg/5p30ZRSdkY3\n",
              "pmMXyyPRgsjaEK1zPsDMqTK1Essi7dSnWYbAGof6WbEcOysG+DuVxlKzrxpok+Tt2lvwBOXn3yg5\n",
              "vfgYEY3PJW7LsFwdIH7YZeNP3BhAG/0DXLKSp19cxvuhVlLWjKFfyCyHCPTkBXvepKLsUEFZ+ViK\n",
              "+L+4N5NxzokVRZfSzaWZKja8YLU8mB+TuOsKUJoTSRT7KtUOtdg4xlbLJQmvzgFgeo8W/OvBvI/H\n",
              "vMOz4xz15ZgYCfgqId/kae8/TUU2fa4DjC7Gqo95CzgLHhM3uIwIY10swn4uhAr3BdZXUuUFy1sr\n",
              "AyqmSHueFiDzpQsbDWocdBUyJC0t9S3c6K1OQuDmI5xJj36W5P///5uMeKglsvCRePQ0gz6bv88g\n",
              "CTQd660y27caw3DKLzC98D6HbPV5BdUuNVb2KXf6o1jCWx1r/p40P7lrLo9onc4NJsDV7fEabcZ9\n",
              "OOqIQcHFaT49o7v6tYFR9z3ofjX0Lpehp4WLaxLBEkMx2KUMq36aUG8uBUjtB59BkzkaoVXxxT/3\n",
              "qXI8JvvLlBG4bf4tY7jHwIgkYD17jjiN/YBCxMFrdLHPcmZ5yRSIO6idEsUKMRvk+tBydnYDwo7Y\n",
              "AAAJ8kGbeEmoQWyZTAhX//44QBkb3ALCW/00AA5+0dif0rkWQ2mG4SGXgSqEyOkv/7AwS6Lo+Sl+\n",
              "QBsashy4T3AtQBvVCRU+5y1zYRpf9BBN3UF8M7XGquar7sdEMfwhkqUpwHdXUcxUkQ6Sh9fqeb0s\n",
              "N0d2GOYcvbMnFxTyAWSf9Q3PP4vFVar5w7vohvMb3qK7aE2Jwq8YG1KBhHDppNaJ5uL2BnCXHCIk\n",
              "U3xjuZZ6gQM7IiiwFF4x7jOkKgHJd//C42nP0xAq9Hz+v7pfEZi3ozefUPQq51dhcxztTKbD8P1e\n",
              "6xbO4HOcfZNbFhwCOEpI+utSHbZh+7Bm00BHSo8biwv1cdvDm0ffRFhc75nNf5KSmSOo6+sGLh0I\n",
              "zp0E9vo1miRrTjMI3TTRJli6E8Pdusoqv2uGE+DEtKYGTKOFHt/Gbb39Wsa6UEVO965gndAJPESK\n",
              "R3kYrx6hianJ3l5iRbLXzdkv/B4jSVeAIT19VypcwmvYyH/+1Gn7hZj+8pafolo5TVkhxhek1hIV\n",
              "FW/0V+0nDMtw8sYdgraJVAlOdziI74Sy9DHWNeNvLpj190o1EAjeiyi6V/s1JHfUpT5byYrTPYff\n",
              "gWWomL/S3z8O1e8a9A5zdWEKw/6z4gCBqHkzIsnaKmNR1WaZEhkR1FBYP9zGTmHZtYK8c8kyNcn2\n",
              "vOdBGQY+0a3RkqTxrqC73sIYuhnMw6yQByRdDtvmpalkz6zXTN/XCzl/BYDyssH5pcGN9rqXcvZt\n",
              "aR/riNfYQYf5ppMGrVYcM75fD1+wDx98uT7aIZyCKpifsgvoPJQxWYubANRsRHTJeJKH3h211AGL\n",
              "KdkdXHyN+bEclp5Eh7hCqfRnsmkm3jEeGR1lcJ/Auf3udE6UAgRQnIvvyEVryosovGz+bl0+s8qC\n",
              "Y/LETplEa1EN/EeBsBJQopkHB3PCVi6lmc3dOhmSihneSr78UiirE9uJvVUFErTB/JhZqv/YOkVn\n",
              "emJQO4qmB1J67WE97fwnOpRM/eoatj3tT+Akt+4ddhkdFi975AZBtK/0WEdQhynd3a2m5i/icBkD\n",
              "pC2IBXNkbJuRLSNTOV+RgRAYCI2LkUXGx0ABDbPtQKnhD0fhrP+XEAQHLTpEjdioG1NcbehuyGtu\n",
              "4Tu7BifmHznAz0b5DYJaDaAfMIgFyhq/lWV17CXMHa7DVncH03fkYO7uLma/h7tTuLC2u5/oRcBB\n",
              "omwUpLY/RbQStg8XC/iuHsIFZQrnqdhTT17aN+0YzaJ5wBOVh9lR4zhbD3KoFutOs80+ZMEROomJ\n",
              "sO2mcxYh4J2NmGY0sh8oNlkkqLjfW0+nSwaEz3da/JkNYcisE6FoKOmd+ljoU4lpEydE93J6fX86\n",
              "CGuj6lnrHUWRwy9Sg8fnOaUgH/RewaCuRLB04SqTlxd9IyIsJ8aIpbEVez0jvByF8YtsPuf2pzG9\n",
              "JL15D/4OvHOHoXdh8UXRPSvIzISKbvN1mso0Ci4xfTnZPr4OseVX8nYSdHqzpDQOIF16PJTwSROV\n",
              "jcZw64gBCgqKfR1J1BfijVzNwG+PGsElUu9ihM4Qk1WOKRMKhxjnhiIBDyYgRPt2QXvYQtMVL/b/\n",
              "TlyP7KrNEydPiDO83G+bJD261I20jclM+1s9LZI+NTSIrx9rZi1Bkt0wlqU6J6NtSVAUWzWEX/a2\n",
              "btkDRw/EzAo3saXWn2lPXS47dJFIW2Ypw4QdYCLfqFxn8kz1hIBC6vTmoaQIAolWmp0TFXlpCWjA\n",
              "WRij03GTJ2dWpVQjrTag8GFbzoaqV10e3wKgMYAGWg+f+SSgc3tX5zRjd3LpDR2DpqxP/Yn9KZcP\n",
              "X1kKKZvyM9/gZnUsM+pqsY8EyBgbleCAOSCOkZgjCWE4zkTQrlIPojp15quZvN33w1SqGMOWdrmo\n",
              "Bwqut2RuclwL5FPSFMAT3vBoMTBAAVhCBrz/Xlv+G4EdN0+FOmP5XVZtjkOFTwgtEEQEgRCsmX6s\n",
              "EqNvoeRFjHmRkvmQjMFqi6vosoXqhzapp2X8gK8xTX0dxMuSHgmi77gbbIPRvvsFIJizuXtovSFQ\n",
              "e1doePt+wQQ1VHMHY9vfnG9cYliUhdOko9F7588VvLRq+xfsgrG9404DRZQ38o3VH9suB3f+zOPB\n",
              "aIiCisyvxvoBpxXMGFduAXIFOMaPV1m8bIJt1kXKltlQwEcxseQTxoa3uEsvqRj5P7/tjjS3gAUp\n",
              "lBDH06C/AxnHevyfFBl1nLNFjyD11mrUI/DCqxnL+2+CjWeKto0d3+WKTqU/ag7jp+1KntdKU/XK\n",
              "WQsNllSirboqrjWle+F9uhvlxMCB/Fq9Icfe0MqkzVLCVyTdf28aex5RZm+f78S/5iFm4+T/ZrPN\n",
              "WAU520j/thyqWMsjooQ7nzCibPUFMTRw2m8/ZzVUFJWunY76dEBEbRuccOfthQG6+EGF1jJaQi8a\n",
              "K5oGwM5Xp3gmQY6ZNAbwcAqtSVI0ALommJ3sHfEdx0pVBTQj7FBTjN3IizHy0aAWSxLgKA+bHX7g\n",
              "d0NK4i8vZ7WSZ6N2Lbui3eyDvuXZqDmNlvfuuTgVd8zX0ErgKtRTfCGL2qb/USqYU4E0zDGmHLoG\n",
              "F10A85BEPIF8gDrESkrA8h13mOcu8v322gtim3RSWmEy1QnalpY8iLzddnezr9FrLZttPzJAPAbL\n",
              "33g/pdvF+d4kZNj6lsfj+mOP4cmUofxW8+QDuHSMpIaBgcG6pC0o+ixVsTgDyPRQaOlzW4EmZIBm\n",
              "2hxZz5LfhjpYJz2csTJrfb2DJUjtSnYG4ID3XRqILeAKEHKUJu8nN4OqeJlMhSuVzBHXnwnIyds9\n",
              "iKpGHB58O3WciwfH/bfaVpjxz2ZP/onUd2XTguRdSYLK00HtxAuash2eJMkSbqClurHWVzl93I8O\n",
              "BllSSdN67AIRsvVmR5hxbNcN67VzgYxITFVGD7iSan0SDMTRHk5+J+O8jm/kJ4pFtjpzCINd9U7x\n",
              "/GW49FzX4epGD3yN6GSKdAANhD5sONwe167WUJgI4Hd9oEjZ8nhdeL0w7ZEzxrOYkjTzUkP9fI++\n",
              "6sKXRa3LfBep056RwlpInxYqcKWLh8xnIxFHOetEjn5kqg9IKu3/o+AyaKGtTfdk20MU1BazAFed\n",
              "M42IP3OAKUDFqDFP/12pjlWhbkSoMocOPrbl0wK0ntG4kttczJRL7uFNn4E+7vLVX0UWL9Wqra8v\n",
              "RvXNeDp2ppyWCfKcvT1TLKKsbEnme0dRmmCVL2vwqkNA67ZYBWckZi7qsv5lQ2ccQ3VGaD7v5ada\n",
              "II/bj/PAZ75fmUD//Kg4qeMGItjNWOmlENC5mjvloIIT3WrkbWcSB5A02n/v5popYDKhvp3M0Hdn\n",
              "9WY2PVoeZwEgqkMNSCuHjVEXDv/cqf9ApfOzrsuvLIwyvSNDhVwu85OBAAAITUGflkUVLC//Ajk6\n",
              "6fPrcMsCCNO3ur1/dIkMKcAEHGF9LI7PRg/lrEO9eNcNkp6Hh+MN3DOGzy0+fBEldNcBPEiqsOTT\n",
              "+O8HeQNfgbgTrERO3zBw4N/2NUDizpPIRt8NVKGh2M5XiZSLP3SiKXLkyU4TdT5bMHHyPjdsoRqx\n",
              "BerSIraj2fILS3cw0EMMyMLeTyE0ey9uIRfOkCImr7LBcqvJw+CkorFyzkcZ4o52UUW3OWWJZ30i\n",
              "1gmVHTBh6qt9i+xEr54fXr91euO6A3iwWnp5gB+O7b4AC3Lnwhx2yhOkIzDZJZJZ7bp06paAmxZO\n",
              "rtxmcvciY6XHmv2xyBT1WFicJghLbpkSr+1e+qfaClbfQ+Ga1zWHT8QVtjcrWK8wbPsWPsKfzTn+\n",
              "hYVC+/oIqlth/Ql1dwpLonY1cjD+oAtvAXN/RhoWLrH3z2F1BMo0edVM6a/rBc6yM8kDcdM2+fgV\n",
              "MuQ2TSEnZlHpEeV7x4eqC0JF7qAQgMJ1VumAhH6FNcUiac0DcLoT/elJpugVrj77A1/O/BR6XnzI\n",
              "cx5MI7Gjl8MN3WECzKoOZ0DythRW9Z70gc1d6j/ogf8o5ATqKgCfuDUcCQHw5r003F8df2FxeLuE\n",
              "+3uyE9qHLhXLTpkgL8S7PJVspdXy9iK0Hy5dFmSpABiLhbj5pMwIvkW/M3WH6Yl3mQYvFoPw1M8q\n",
              "pO3f4zfma5Hof0vPh+tvRBJG5p/AHuOs67KI2CRMa5UAbc5pA3G8ckPJ7btqPHLpTeIjeOLOvT3K\n",
              "atQYieo5gjmar++hDZn6S8paJhg2/4JeN6NfvPjlwy9Wa1f/ISvIrAhkskX4lyR6CLwzupOcAY9d\n",
              "qOrGtfaeCCU6KdQIqs2Mraqm0djYg+P1hHuV2HAdISm6Mh5kC2J28XX4KcytQc0jtcNrgtHvhG/j\n",
              "kvbhpA0AK7jP7LzmWAw3d1yjoPkL6DI76LbP1HvEGWr38KFwlHkDjC38NEgolDPGMO3KOuDZCVlF\n",
              "0V001HgE89rYxo3EIw6w20Jd/B6IWbb/lK2AboWnw5KAbyi3UgAu4sx1F5i40TO9MY9ucwlY3v7K\n",
              "Q0FG467CH4URIOcr3PiDCrEsZ1+3AxJZW2wceunTOGTAvuH8QbUG3Dpc20l1eYptt6xFxZpbbMmE\n",
              "EFtXuMsUD1rHi03JZGAKzBA/IcCgHQKxa7VVbEGX2/Jlb5f0eqmd0JqSUATZtpsGL2KhKrQYrK4i\n",
              "QkWmP+XVVMzvio3Io9adudr7a0cNhAagp/9kE0b1qZiepGbZgtDO+RBrM/Ysbmba8ewXBeKSbUfd\n",
              "ZLY8YEfYExCe4mibrLR8cPNFaxIwNh6uAvVUo26TUbNLiG9UU5M4Oavp2VB+v3EK/aBQxwCB2v1/\n",
              "JtxIeQM7hDgW8BVEh94x7h63tdWC0s7TDkc/ZSp1GtlTfJ1GgvAo31iHbPg22Gu/P/7PMO7LnzHP\n",
              "MvQHbhRAuBF2YCROFvm6f4QvdVSfwTwnxRoT+5XI932I3HCF+rwxqkSzeBA7l2qv2z1xZeKRCoFQ\n",
              "VYUzn+Np7Y6K7uO1x8aJ3I6YE5SqaKSxcqUvoQXLYnfhxxkLo2APP74PAmYOWsDjXz0sDAa9fyem\n",
              "oUCXjAPiyv6trOECBSfAJUP2HcrwroaKsvE/MaxuRKTc8tPIqiJjGrFmz3zDFmo3DZRbsTBON6mw\n",
              "bgKH2Q/9cxORg0fyw7YUof1UQ5Hm26YDvgd7b2vQg3qnECd1labT/7YGIwNIewHEIGkTog0vaKMM\n",
              "IaK7OhKV6I/Qi8HJbfYwWl3MVFxAVuXJ1ncgtr1se03+8FOS6wCVgjLJ6Utk1XqVY5D3qu/xGZiw\n",
              "UFTp0ysXGHBly8LuD/um56cbmnypCivvDBX+DJ+asOYNVwGwUoAkOn5RkeKdx1i81fxVbs1qZvGR\n",
              "05zi0Xkz/wK+UC9Rmzk4TCiN1SGgAAsJQYvxe4EOgrd/8wGv+48AkuZLvaKroMFtiMCkmnQuY+Vt\n",
              "fwjnaZDL8KTkw41hj89KR01I46rD4VeyKkgwCC34fE7j1slFzDD/WdDB6XJWIvr4PTEgWCE7FYwW\n",
              "Updwn5HPiKqfENKIDf0YBZF69xw2oUcWNU+f0VClEVacW6T+rTb3bCNw+N349M7ZLqFzWfPvaeDe\n",
              "Goj8n4RtZvMO6SYcPl0qvjcEZmE1oFCMdWgcNLtq5BKsrNHxpDYe4bAH1RN2wD+uGwbGAsTXWNsl\n",
              "zabBZagr0luweYusOMYs/Eui9ej/i2h3CY7uXnGgbSWIdV+8h11ps3CQcausogTezJ8qRma975Cz\n",
              "+b6NgsAAN9ZhfhuHk8fcLjrmQp8/I0LDa190qGe2JjqnBqiN4hEccqUhPsvKQerYkrfzzGxsNMyM\n",
              "z/FR+S4Lc+4LM0UwYGF8Ehq9pZ1wQ2EX0ojaUh3lwFs7YqsFIbRNc56fvJCaStWO369dNLMdhfLj\n",
              "QZqJn60XxCNDkbHimvJG/QMo1I9B91Oof6+ZOsh/wjnJXFgyLMi/5YAkL/IDRJyG4U59Fjg6S1nm\n",
              "nMbjwveTaVWedU2Qiq3Vli5dz6UvZZ7P7v4oOEWQ3YDYoVK8YDDuN+FOcduR+q7JADW3z4mEkSH7\n",
              "0l0dexzVU5YYYN8+vCT1rr+ZjisaNLlf2upc/hE4hT5EAjtR8QVtprtVzCyiGDfq+Vy9Rbv1yj0s\n",
              "HkIDggjeAG5C3S0vd3zkPgyRdFKU7SYmiLOClmSq7DAKQ5Z6yWx/8K4mTR8uhHw/s2KmMr9bqgzB\n",
              "M/OLzb6rYXhLDx6ppNTsr/tTQTi0MMEQirqQq99FJRxvz8iXYvm08xSVjiF9ULQmogyGyIizhifW\n",
              "TWkONcUAAAnCAZ+1dEK/ASt8oljOdPEMAF66o7DrGfnVPDA9oFGLvzpv4qD/23e9v3Ay4YF9uIhN\n",
              "deOdAz15Fdx8G88SgKD9PV7kJKNpl3lgyNYPD5LBO2WiOphYdjtISVf3ZpmtLZ123Sq6bKqRarNX\n",
              "2w80/nIZBblx8zfa81kgDLh+ohCprCXLTyALTZ2PX29bIxS2PeYq0tmJ/0xmQGckyfgY4yM2pjO1\n",
              "4JomF7QT0VFWixY+RRardFleNUhIuugz5mYG7ruSM6iC0ddDZinrfQBnQGTt65j9yd/2bWGKe1go\n",
              "k/7iIQHyb6P8ZLLKZA0eFsAlzgrNIrTLpIruMu4Uv3FqxvspDiWVW5/7nOo1zkIm/TWPDp2upUWs\n",
              "xi9rgg+Ur7VeD+PciO1HkSVw0army5TDU1Bt6kFpSLr4nLhd1KBpMLCevgI5ik5amVVA4wBqBk+I\n",
              "5agrMZICBVTT3Cb0iOUlZbsiCwlt2MUz0v9Z4U8S9DnbJyV0EWmFPpnkOHZ7ZaB0f+dsVnQuYXog\n",
              "mHBAi1KkiCTN1ogop86oOPmXL4VxkM0oNVTPmgd1H8bcyXhpyxUUaO6uPxlSpWMAGyvmRfaO/PlU\n",
              "Lh34wYd3i3YVb9uq90fu+dGepb1cCMm/xxECTz4HQLPp2BXWv+VlEKIQvY/NezVdRMEMQ4xe7o+G\n",
              "eejDnWB6ve1WcO5agtVCxH54p7LDwaVb6+HD8PbnZvEjUdE727ZHXqHpIHp7z1ioUI2y+jMK9g82\n",
              "lZw1CncHlsA6zPR6OoHAgVr4EK9EJiLk6ozuWl8rtW0iiVBElqK751ysV4VoFzmp0DNOH/frn2Sz\n",
              "2xG+4wjXY/NozZoVXMHBvnAkVsaKv3UsYrtF+kskpX+MxtwonUbFWiFbLg2/uXg/B0iKE4Rw4CdE\n",
              "BP33p9zjPtTEHx4GsY3mZCMq0TCigCw/1CiTPCNoDvNWY6Gxyd87tJ0VPvBQDirW54UejVcq1iMs\n",
              "8NahAXxn6QibEXP71i6zMcU53UVmGr1KSXhPkVPzhtIGYkvDbnAw0E4dikGkl6uGjzmjoE8NfPgD\n",
              "JlaqnHyRCLtJrhzcwQac2QXxYVZR3eb4DYgpvXjWPWKdyOA9T2efB/P8B1X5yUvBDwUF/v2hXnw7\n",
              "HFOWxW4+eG+39+LzJCz06wRWbN8tSDc5kq4KpLDGa68JnAp9ifRnpbEd7GdKoMI1jgmiHaRfSrKU\n",
              "1D6E7fM+eMA3wsARUCOeq+364NeBWiZeoYHYQ5gNN3GnOLpWvzgPgyXsfsNFPU2txkMXgEykP2VS\n",
              "/BK0WllqYhLiyrrz3D2M7ORmkIngW/tdER3RDC5s3DbzsD3SjmwcRt8BJIzuTdrsbdB/+nV/e0YC\n",
              "Z88xPkIyxcAhx9HO+kxGWMbNTn0goNh0wR8YV8e0QttgeiQ77sBW00ciXSMHW5TGSz+KQ4SbVLDt\n",
              "i/GRGIrHtPB4Z1x9SZJ51MS/eHZJxkiLENq2MOJQFVYrJM3NC8D2s/XybpG6fmudtejaAqBj/bBB\n",
              "7AxyOobKAfdyYLFTotKg/W8gppj9Q7RWTSVfDIGZwUMH/V12uJkximayKL0beLxkCW7AGMF5YyM/\n",
              "tyUsIctk/g8jSIF+jbHPNVlvnCBaxoaOEEmrq/HHonBbeeBUhhOIFPAm7S1ZBVwhp1Uf6nBd15DS\n",
              "Cn2LBaYo6310rp5N6+prTOCBLLcNJhcPPIWDGkDxHynJ87HRbnMPyTQlo4QZDLI5LRsZUQfUMsPg\n",
              "SxoJ7RAi13QRIUN6SeaaEs/8YLa66IqXrCqypuMdyv7JmQQPhssS7kTqRE3MNBMJILEXED35e20x\n",
              "OA4EYvpWr5VWXDNOAhaGv79pO+UuC7wWpzAAdJKDy8cYC/XDRjAWh9izG29790r4ggvSQveRko5W\n",
              "YEGzPQfdW69SgXOOcT3nxYjKGeEdmSaxodYmd0NgD8EV7J1/NY+UIdkYkwG0q03SbGH/4cud9czY\n",
              "s4OM9wFS48yZsSgNI2/8uvwl19hVqGZrx77aMXYRcb7o4GgSVRLSz/YAkm9OBim5V+B9YBihu75S\n",
              "0HiMfpcojKvr+oSUSGn/etXjPr7SmikWqsiBQtZ03ptsgrLUoOamLpKh+dFJyLDS/LMnrZ9Entsy\n",
              "O7A/6KkCDbCdCcQ7sddw2dXMP4TtL7SWbQ1n6TxM/6PeTh64SnGjygEoBtWSfu1avii87TOxIrrV\n",
              "K/UiMpwIkdNj+eWPrfO114fpJrYWTTB//OIIhE/AA2lzvGOAKD4nn5rOJ+tFwgx/QEvMlB7uw4PG\n",
              "l4aH5iqHmQHGehGGKut4+LsFw2DTwuLmw6MaXnY+zu2x5VRGIJimqgMfvAf4xOqr9RRn0NYvdBng\n",
              "7YO0z+OK3qo5W+Ca9kCReSOUA6Nh7r4LUcx501UP4XVGVjBSY+9MLnNO8lufPoqABlpFeAv5BPEG\n",
              "KRe4PDpbAHt5426rpoQBIGyvi9ApEdaaWh7xNF/0nXnOHIBzUtZujy97G353RKwHuG4ckYVPsqQM\n",
              "wwIlanerzgR1gHPA1ZiBTZm5C31d7y5LVtr0UazhS4SQRaDVgKE5HMd3E03tpyZDRYgOt19ShL+Z\n",
              "VmHBT6JkQXBBx2qAGmsTSCnb2EGHFF3/3PdIPIXMo9pojcqIYt+r+uwhKp2HMQj4mmFQ+0iB7aAM\n",
              "21E1tgNYZBZouiqQcgB9yBcbLqClqXUXRVZa67QPxkxkoPjenRP0YE5ELVKvtSNB1Jjc1H7Hbv/z\n",
              "ougMK1XB0QHuZzGa62cxsJ2ahZDu5c/8qp1uBQiXdpkxklncEPjd467rTpeAG+elcBcRgfa/ezbL\n",
              "j45d3APDTd2oF+laiJtm8iQ7qwvvAcXcItEtQfrHU5lSXFK7fUBUB6hcob3z1rTeo2vLVdsWpBpZ\n",
              "/PTzAQky583dMB6vqGHSI0+JUkZ/sV4LnPYDvZKfPgQnwHNAnWudXrqY8isNGWSJWaZStNxR0BA+\n",
              "SDT30Xj/yuNqjiNGJ/zFOEclwsPWC91voNwXH5OBAn4ozU2L33sTk8YI4pDLQMN3ABfNSW8URlSU\n",
              "b8GWAnWcT87SnBV5jraV7RuwdCGbq1f1POH8eMEHRhNAfxal+9vUjiU/QnrYGikd8Gbnm7wuV+WY\n",
              "kHUsDOz5TrCP5TtsHIzpxKmidLMbXJQT9okoYmg3rebBhCZW/oX/5hdBp8K5RiiONdlVcjvB4YvH\n",
              "B7onyJ8a+UXLaRjXX66LfQd7BkagWg+jeQXTWLd7XSKLNz2lSOVkOLciFk4JwmkWFZp2sm/quy5o\n",
              "5K2zA6covsp5HZ+f2TKJ31Cs5Ch39PSwUVkMnKtyhLvj99L5D8L1nCGsvMmgD1gf3hOyoybo38EA\n",
              "AAjHAZ+3akK/Au7AnQdEdDflnNPg9yxtrMAF66o7E/SsAg+GXCpLH/jcbKWsY2IH3+k29cIHNpyF\n",
              "/RBY4mKgp9jzjDGInjgEkcoCrPbH3B14Yp02SKvCzCgqjufC1OiIY31wbSPzRF3Ll4XlrsA36zQI\n",
              "CT53wRzY4xkCwCeSKuTnYroPJ95sJnC2rVRYtU4zMTkqqwP8wjWP2FVUwoRtLL9Ow8i9CqprD592\n",
              "N2Re8GjLk+j0cTXcXY1gDhlEFyCZKqTMjWMDARYSQh9/7c/a0AlRGTKtXqfOLXFAEwfdncgDvDi5\n",
              "41NGos/r2Aex/Ti9RWUa1wdAJaEbukWcBst69T0MmeWDKGNaw7lx0bYpxRaejxR7M/UaE+eoyk40\n",
              "h0WosT2sY+7iFzegjJBeTaINB4KZuCdfCOOfsETKHcMd+/NmtIGK0+WjLhyHRGDl0dHiY486iqBa\n",
              "t2DJA/+32ikp3naFwMOqa1gm1WrUcmmi6MVDC9taNPIL7zp2JTgEqv3Txu5awqDvYEs0QGQxXCF2\n",
              "uz+/R3WLPeXXrn3l0l/JMrdMGg9lZCMkvLNLmaiKeDJTH/GlzIiR+L3SacQwYK8EYrTkCKD1ns/t\n",
              "i2lVDkh5b87NTZPiZGH1x7A0Iwm+SNgtzfdhfja51SkiLu8oBrcmcq3h96GhGECbg1prMtByJGW1\n",
              "ksOy5lV41prJMjA8G/xUXSTHE2Nm29EWYKcBp2iJPbsiPvWqyVJheRdnTNTOEEOnMWDkDjIHOs09\n",
              "AhEH6V+w9ysulEMPJMKrMvp5Tvc29A3FIjvA6nOOi3QDqu2FLT7HCcF/eedVVdRKma+E7hGhQ9Hw\n",
              "lrs2N4FagKQaVeUIt8kvW9aOXOp2CD/ThfJFMycJXSfhWYL4wrS41RBMBuTvHb7auy0e2r+IQ/hC\n",
              "Mst21tSMr7XdsvPdhv53dAYB/Xx4P0WwyMVO9Dc0/LeQbumzzSkS4c9u50z7eLU3h6srmgUzX74m\n",
              "Oh8cxrAUcAxAlrSIluEGaRBXgBDejjSA4Fm3LtISqzKRwx5uU3uidQKBmRsZaprXkXZfWSnmJxOa\n",
              "0QcIOUwKwJLt97Kt9oiKpmI/xzpAleRQEJ+1ekFLR0lsfgQ2GiBlfNPumtKfbkQGBi3AJUm2VoA4\n",
              "vXRGEvwrTfQH1rYbQkwIXE2LVN60FVcTsyU3dvHF0B90KYR0pVKEVQH9v7NoB6I/IKnihNqOn6E4\n",
              "37uTj+gro6caQhPDgnjpTycE7wbJ0u8MYTWJocbcKrh1vsLatXE02rwyhXenNsLpf0wahxSi4+D8\n",
              "MlmjlgalXKXaF8HHfoYJCto+ppmCQePEwC3EPkJ8E7NJRDdaoK+AMQMBxX0ktUHDzhs8ZwLMPeRD\n",
              "BJN3Pfb1sOcICRYKWFHDf3/4BxzdEBeJAsn2IipQ5o7cfxWLFbJIs5vpPfXEz54XX/MHqOnUW9Ds\n",
              "bG/6TMKxym/xqp9tDDaNHwt25GU+whlmNG+CwJ78Qk4EHNDQXh30G6cZF1LXKYBb8+9XRz4qa7sv\n",
              "qlfy/yyi8tnUNIWedWK2iaeAVEh0YbpKcGFV1GY7/VmtXfRnqAP4+3+0tGraVY1o3BKaE4R/pqay\n",
              "vDQ6SQSshlsr0MNaMCXWaHgIZRNXp5ZLgwJ51UxP1/6bUrq+EIZvl2q5FPSJu6ZIIZC1d8DMfoAZ\n",
              "rTAeFARtfYhdnPwYeEm5rK3pU9/phG061EoMRaWGxw+f5920frvbiz3oVkS+gMl8vGUwh9QrIN8A\n",
              "gdGM9yBo2gZdg1JKp5jXI408nMgY/3t1ocHp7+zCT3dV/l8zsK4uRWas2w27sKovhhCVd6Ixv786\n",
              "j3sFocvepFHgRQyFY6PLvgKZaBJa7EjFKsiTIlVtdyuHSNPhHv8D5C8bs3y2AbYSmdv8Ev31wgNj\n",
              "wx7JD8msjcfYMyXTBItQFdeDoaHCf88PQZ1/IgFsKm72WpMKa2G5RK74ZRbEtui9bWyw8blav4hs\n",
              "D22swwbAJz1e3oOD5Kic20I1fW/rgL5T/U4mzT1Y/kF5tyr0Bd30vr0ZeySb1cMWJaP8D/2iU3Ft\n",
              "SrHZWgEk3sxPvGi4tscEGlNF+C5AS4MJTPhQFVkJXkzWakbZPpXoSVJTh4CXOW1+51MbjVsRV4My\n",
              "ZSPbwr3/aP5Xnzfp+xK8ERASO3uSaxXS01UbuA6fICF5a9JwTB1D5KJK0zQXcMkvTQViN0T+9OTr\n",
              "nNV/hkohPfanpSrRhMpZUoQxM65vveX92zsZ+yHVL8byOUIPGfprvYQh0qpVFHV/L0innC6uUgu8\n",
              "Hw4xeGa6eGrKZMpoUpSzMYBZkszfYheTBII6+LA0FjgRWx5s4QF6hvgougHSG0A8JuFuEVy8cpyX\n",
              "+w7mXMWt9HIzZbUAENugjqnL6mweuY/b/He4VGT0emc/B6AA9wP87ZlxAFUs9TXzXyVuUK9JDAhN\n",
              "XXVqr3hWqeY8U0YhQDkHwmh36nQtajKjCxbKMau+QpS3wdqiLaetLXOHjDBjjUYs2N5EH75RV/Aa\n",
              "L2OGf/VJ6lFMnFAztB3WLEhYOrwjuBurPgmSDcnBHuCfzr9mMDwIKbWN1Dj1E8fpwHp+nYx+U0Ou\n",
              "BvxaQ+lJqGh/5SlFPQ1Cvm6ttaTnx08FspNgI7GvLtmMdon4GfJv0CGNgU1FzSN+eD7uO5e6KNvM\n",
              "mEh7AmK0Be1y5QO4Pqj1XD/bTTapPuMbru0TQ6e79uWYRjVz9K9qRrrwRehxIXgBTfROj7b86D/6\n",
              "j6IryLHDjH+xuv+ixAWt7PLdaG5WNbG2RleEMX7ll8kHwSjK1kIdkmBzvF0ghAvtAdOTdAe5R47S\n",
              "pV5R+Mk+PyXsvmVMjj6VOZW4IEEMDlyUHZv1mFs7lS/jnY95EEWyBgL1SFvYLZb7qHbi9vfpBylU\n",
              "u3WD7RhjFgg4XfINuvkys/HqAIfVSXGN/zOJ9sNpPwTm7AQj/oHZ8U6+v1aqjit+n4E7TakArvby\n",
              "DRJc/XnfuCFYyHRvZgtZu8ZM7vKrjK+tSxu9AAAEWm1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAA\n",
              "A+gAAAPoAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAA\n",
              "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAOEdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAA\n",
              "AAAAAQAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA\n",
              "AAAAQAAAAAGwAAABIAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAD6AAABAAAAQAAAAAC/G1k\n",
              "aWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAMgAAADIAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAA\n",
              "AAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAqdtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGlu\n",
              "ZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAJnc3RibAAAALNzdHNkAAAAAAAAAAEAAACj\n",
              "YXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAGwASAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAA\n",
              "AAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADFhdmNDAWQAFf/hABhnZAAVrNlBsJaEAAADAAQA\n",
              "AAMAyDxYtlgBAAZo6+PLIsAAAAAcdXVpZGtoQPJfJE/FujmlG88DI/MAAAAAAAAAGHN0dHMAAAAA\n",
              "AAAAAQAAABkAAAIAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAADYY3R0cwAAAAAAAAAZAAAAAQAABAAA\n",
              "AAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAA\n",
              "AAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAA\n",
              "AQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAAB\n",
              "AAAEAAAAAAEAAAAAAAAAAQAAAgAAAAAcc3RzYwAAAAAAAAABAAAAAQAAABkAAAABAAAAeHN0c3oA\n",
              "AAAAAAAAAAAAABkAABgPAAARPgAADg4AAAlqAAAKtwAAC2wAAAloAAAIdwAACZMAAArdAAAJRAAA\n",
              "CMgAAAotAAAKuQAACRcAAAkOAAAKFQAACu0AAAlEAAAKKgAACqcAAAn2AAAIUQAACcYAAAjLAAAA\n",
              "FHN0Y28AAAAAAAAAAQAAACwAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGly\n",
              "YXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU3LjgzLjEw\n",
              "MA==\n",
              "\">\n",
              "  Your browser does not support the video tag.\n",
              "</video>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 38
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAACtklEQVR4nO3TMQEAIAzAMMC/52GAnx6Jgj7dM7OAnvM7AHgzJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNClDkhypwQZU6IMidEmROizAlR5oQoc0KUOSHKnBBlTogyJ0SZE6LMCVHmhChzQpQ5IcqcEGVOiDInRJkToswJUeaEKHNC1AVcegTL+uSnUAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "T-dMHLBbRp8k"
      },
      "source": [
        "print(spike_targets[0])"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "I63CROTaRp8k"
      },
      "source": [
        "## 6. Define Network\n",
        "The network is the same as before. The one difference is that the for-loop iterates through the first dimension of the input:\n",
        "`cur1 = self.fc1(x[step])`"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "a_elvRYIRp8k"
      },
      "source": [
        "spike_grad = snn.FastSigmoidSurrogate.apply\n",
        "snn.slope = 50 # The lower the slope, the smoother the gradient\n",
        "\n",
        "# Define Network\n",
        "class Net(nn.Module):\n",
        "    def __init__(self):\n",
        "        super().__init__()\n",
        "\n",
        "        # Initialize layers\n",
        "        self.fc1 = nn.Linear(num_inputs, num_hidden)\n",
        "        self.lif1 = snn.Stein(alpha=alpha, beta=beta, spike_grad=spike_grad)\n",
        "        self.fc2 = nn.Linear(num_hidden, num_outputs)\n",
        "        self.lif2 = snn.Stein(alpha=alpha, beta=beta, spike_grad=spike_grad)\n",
        "\n",
        "    def forward(self, x):\n",
        "        # Initialize hidden states + output spike at t=0\n",
        "        spk1, syn1, mem1 = self.lif1.init_stein(batch_size, num_hidden)\n",
        "        spk2, syn2, mem2 = self.lif2.init_stein(batch_size, num_outputs)\n",
        "\n",
        "        spk2_rec = []\n",
        "        mem2_rec = []\n",
        "\n",
        "        for step in range(num_steps):\n",
        "            cur1 = self.fc1(x[step])\n",
        "            spk1, syn1, mem1 = self.lif1(cur1, syn1, mem1)\n",
        "            cur2 = self.fc2(spk1)\n",
        "            spk2, syn2, mem2 = self.lif2(cur2, syn2, mem2)\n",
        "\n",
        "            spk2_rec.append(spk2)\n",
        "            mem2_rec.append(mem2)\n",
        "\n",
        "        return torch.stack(spk2_rec, dim=0), torch.stack(mem2_rec, dim=0)\n",
        "\n",
        "net = Net().to(device)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "E8utR7I9Rp8l"
      },
      "source": [
        "## 7. Training\n",
        "We make a slight modification to our print-out functions to handle the new first dimension of the input:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "FlkQt3skRp8l"
      },
      "source": [
        "def print_batch_accuracy(data, targets, train=False):\n",
        "    output, _ = net(data.view(num_steps, batch_size, -1))\n",
        "    _, idx = output.sum(dim=0).max(1)\n",
        "    acc = np.mean((targets == idx).detach().cpu().numpy())\n",
        "\n",
        "    if train:\n",
        "        print(f\"Train Set Accuracy: {acc}\")\n",
        "    else:\n",
        "        print(f\"Test Set Accuracy: {acc}\")\n",
        "\n",
        "def train_printer():\n",
        "    print(f\"Epoch {epoch}, Minibatch {minibatch_counter}\")\n",
        "    print(f\"Train Set Loss: {loss_hist[counter]}\")\n",
        "    print(f\"Test Set Loss: {test_loss_hist[counter]}\")\n",
        "    print_batch_accuracy(spike_data, spike_targets, train=True)\n",
        "    print_batch_accuracy(test_spike_data, test_spike_targets, train=False)\n",
        "    print(\"\\n\")\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "vbve35sDRp8l"
      },
      "source": [
        "### 7.1 Optimizer & Loss\n",
        "We'll keep our optimizer and loss the exact same as the static MNIST case."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "10CH8RKHRp8l"
      },
      "source": [
        "optimizer = torch.optim.Adam(net.parameters(), lr=2e-4, betas=(0.9, 0.999))\n",
        "log_softmax_fn = nn.LogSoftmax(dim=-1)\n",
        "loss_fn = nn.NLLLoss()"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "Ef0TM6yIRp8m"
      },
      "source": [
        "### 7.2 Training Loop\n",
        "The training loop is identical to the static MNIST case, but we pass each minibatch through `spikegen.rate` before running it through the feedforward network."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "ISLzPpwvRp8m"
      },
      "source": [
        "loss_hist = []\n",
        "test_loss_hist = []\n",
        "counter = 0\n",
        "\n",
        "# Outer training loop\n",
        "for epoch in range(3):\n",
        "    minibatch_counter = 0\n",
        "    data = iter(train_loader)\n",
        "\n",
        "    # Minibatch training loop\n",
        "    for data_it, targets_it in data:\n",
        "        data_it = data_it.to(device)\n",
        "        targets_it = targets_it.to(device)\n",
        "\n",
        "        # Spike generator\n",
        "        spike_data, spike_targets = spikegen.rate(data_it, targets_it, num_outputs=num_outputs, num_steps=num_steps,\n",
        "                                                  gain=1, offset=0, convert_targets=False, temporal_targets=False)\n",
        "\n",
        "        # Forward pass\n",
        "        output, mem_rec = net(spike_data.view(num_steps, batch_size, -1))\n",
        "        log_p_y = log_softmax_fn(mem_rec)\n",
        "        loss_val = torch.zeros((1), dtype=dtype, device=device)\n",
        "\n",
        "        # Sum loss over time steps to perform BPTT\n",
        "        for step in range(num_steps):\n",
        "          loss_val += loss_fn(log_p_y[step], targets_it)\n",
        "\n",
        "        # Gradient Calculation\n",
        "        optimizer.zero_grad()\n",
        "        loss_val.backward(retain_graph=True)\n",
        "        nn.utils.clip_grad_norm_(net.parameters(), 1)\n",
        "\n",
        "        # Weight Update\n",
        "        optimizer.step()\n",
        "\n",
        "        # Store Loss history\n",
        "        loss_hist.append(loss_val.item())\n",
        "\n",
        "        # Test set\n",
        "        test_data = itertools.cycle(test_loader)\n",
        "        testdata_it, testtargets_it = next(test_data)\n",
        "        testdata_it = testdata_it.to(device)\n",
        "        testtargets_it = testtargets_it.to(device)\n",
        "\n",
        "        # Test set spike conversion\n",
        "        test_spike_data, test_spike_targets = spikegen.rate(testdata_it, testtargets_it, num_outputs=num_outputs,\n",
        "                                                            num_steps=num_steps, gain=1, offset=0, convert_targets=False, temporal_targets=False)\n",
        "\n",
        "        # Test set forward pass\n",
        "        test_output, test_mem_rec = net(test_spike_data.view(num_steps, batch_size, -1))\n",
        "\n",
        "        # Test set loss\n",
        "        log_p_ytest = log_softmax_fn(test_mem_rec)\n",
        "        log_p_ytest = log_p_ytest.sum(dim=0)\n",
        "        loss_val_test = loss_fn(log_p_ytest, test_spike_targets)\n",
        "        test_loss_hist.append(loss_val_test.item())\n",
        "\n",
        "        # Print test/train loss/accuracy\n",
        "        if counter % 50 == 0:\n",
        "            train_printer()\n",
        "        minibatch_counter += 1\n",
        "        counter += 1\n",
        "\n",
        "loss_hist_true_grad = loss_hist\n",
        "test_loss_hist_true_grad = test_loss_hist"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "id": "EuRL61AnRp8m"
      },
      "source": [
        "## 8. Spiking MNIST Results\n",
        "### 8.1 Plot Training/Test Loss"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "fl5griHBRp8n"
      },
      "source": [
        "# Plot Loss\n",
        "fig = plt.figure(facecolor=\"w\", figsize=(10, 5))\n",
        "plt.plot(loss_hist)\n",
        "plt.plot(test_loss_hist)\n",
        "plt.legend([\"Test Loss\", \"Train Loss\"])\n",
        "plt.xlabel(\"Epoch\")\n",
        "plt.ylabel(\"Loss\")\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "id": "IZMH5UOlRp8n"
      },
      "source": [
        "### 8.2 Test Set Accuracy"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "eO2Krz1mRp8n"
      },
      "source": [
        "total = 0\n",
        "correct = 0\n",
        "test_loader = DataLoader(mnist_test, batch_size=batch_size, shuffle=True, drop_last=False)\n",
        "\n",
        "with torch.no_grad():\n",
        "  net.eval()\n",
        "  for data in test_loader:\n",
        "    images, labels = data\n",
        "    images = images.to(device)\n",
        "    labels = labels.to(device)\n",
        "\n",
        "    # If current batch matches batch_size, just do the usual thing\n",
        "    if images.size()[0] == batch_size:\n",
        "      spike_test, spike_targets = spikegen.rate(images, labels, num_outputs=num_outputs, num_steps=num_steps,\n",
        "                                                            gain=1, offset=0, convert_targets=False, temporal_targets=False)\n",
        "\n",
        "      outputs, _ = net(spike_test.view(num_steps, batch_size, -1))\n",
        "\n",
        "    # If current batch does not match batch_size (e.g., is the final minibatch),\n",
        "    # modify batch_size in a temp variable and restore it at the end of the else block\n",
        "    else:\n",
        "      temp_bs = batch_size\n",
        "      batch_size = images.size()[0]\n",
        "      spike_test, spike_targets = spikegen.rate(images, labels, num_outputs=num_outputs, num_steps=num_steps,\n",
        "                                                gain=1, offset=0, convert_targets=False, temporal_targets=False)\n",
        "\n",
        "      outputs, _ = net(spike_test.view(num_steps, images.size()[0], -1))\n",
        "      batch_size = temp_bs\n",
        "\n",
        "    _, predicted = outputs.sum(dim=0).max(1)\n",
        "    total += spike_targets.size(0)\n",
        "    correct += (predicted == spike_targets).sum().item()\n",
        "\n",
        "print(f\"Total correctly classified test set images: {correct}/{total}\")\n",
        "print(f\"Test Set Accuracy: {100 * correct / total}%\")"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "collapsed": false,
        "id": "ztM4ogAqRp8n"
      },
      "source": [
        "That's all for now!\n",
        "Next time, we'll introduce how to use spiking convolutional layers to improve accuracy."
      ]
    }
  ]
}
